OpenDino d01824ba http://opendino.org/wiki/index.php?title=Main_Page MediaWiki 1.28.0 first-letter Medium Spezial Diskussion Benutzer Benutzer Diskussion OpenDino OpenDino Diskussion Datei Datei Diskussion MediaWiki MediaWiki Diskussion Vorlage Vorlage Diskussion Hilfe Hilfe Diskussion Kategorie Kategorie Diskussion Main Page 0 2 2 2013-02-04T13:59:44Z Dirk 2 Created page with "= Welcome to '''OpenOpal ''' = '''OpenOpal ''' is an '''Open''' Source software environment for '''OP'''timization '''A'''nd '''L'''earning, providing algorithms for automatic o..." wikitext text/x-wiki = Welcome to '''OpenOpal ''' = '''OpenOpal ''' is an '''Open''' Source software environment for '''OP'''timization '''A'''nd '''L'''earning, providing algorithms for automatic optimization, Design of Experiment, and Machine Learning. The software consists of a '''Core''', a Graphical User Interface ('''GUI''') and '''Module'''s. The Modules comprise all functionality such as optimization algorithm and interfaces to the problem to be optimized. OpenOpal is written in Java. To get into the project: * check the [[Screenshots | Screenshots]] to get an idea about the basic interaction with the software * then, check the [[Documentation | Documentation]]. * or simply download the executable jar (no compilation necessary) from ToDo:Link. Contact: * [mailto:help@openopal.org help@openopal.org] Screenshots 0 3 3 2013-02-04T14:04:51Z Dirk 2 Created page with "== The Main Window == After starting OpenOpal, the main '''GUI''' appears (Fig. 1). The figure contains an example for an optimization using 4 '''Module'''s. Each module has a..." wikitext text/x-wiki == The Main Window == After starting OpenOpal, the main '''GUI''' appears (Fig. 1). The figure contains an example for an optimization using 4 '''Module'''s. Each module has a name and an unique ID. OpenOpal is a strictly modular software. All functionality for automated optimization and machine learning is encoded in the modules. Here: Module 1 (<code>OptAlgCMA</code>) is an optimization algorithm. It is connected via Module 3 (<code>Protocoller</code>) with Module 2 (<code>ProblemSimple</code>). Module 2 contains the optimization problem, i.e. the function to minimize. Here, it is a simple continuous, quadratic function. Module 3 (<code>Protocoller</code>) is a protocoling module, i.e. it stores all evaluated solutions of an optimization run. These solutions can be visualized with Module 4 (<code>DataViewer</code>). [[Image:OpenOpalMainGUI.png|frame|center|Figure 1: Main GUI of OpenOpal]] == Adding, Editing, and Connecting Modules == Right-clicking on the dotted area or on a module opens a dialogue as shown in Fig. 2. This dialogue supports: * adding modules (if clicked on a free space) * removing modules or changing the options of a module when clicking on a module * adding/removing connections between modules * checking and running modules In Fig. 2, the right-click is made on Module 4, e.g. for setting the options of this module. [[Image:OpenOpalModuleRightclick.png|frame|center|Figure 2: Editing Modules]] == Running an Optimization == Right-clicking Module 1 and selecting the option <code>Run</code> starts an optimization. The standard output of the optimization is given in the lower part of the main window in Fig. 3. [[Image:OpenOpalOptimization.png|frame|center|Figure 3: Running an Optimization]] == Postprocessing an Optimization == Right-clicking Module 4 and selecting the option <code>Run</code> starts an the data viewer. Figure 4 shows the evolution of the objective function ''f'' over the number of evaluations. As the objective function is a simple quadratic function (x^2), the minimal function value is zero, which is approximated by 1e-12. [[Image:OpenOpalDataViewer.png|frame|center|Figure 4: Postprocessing an Optimization with the DataViewer module. ]] == References == Input file behind screen shots is stored in the SVN repository ToDo: Link. Documentation 0 10 10 2013-02-04T14:20:58Z Dirk 2 Created page with "== Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Doc..." wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenOPAL in the Screenshots]] * [[Documentation/Installation | Download and Installation of OpenOPAL]] * [[Documentation/Modules | Module Documentation of OpenOPAL]] == Developers' Guide == * [[Documentation/Compiling/Shell | Compiling and Running the Code in a Shell/Console]] * Guidelines for Coding ** [[Documentation/coding/naming | Naming Conventions]] ** [[Documentation/coding/contracts | Contracts]] ** [[Documentation/coding/formatting | Code Formatting]] * Concepts behind OpenOpal ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Task Specific Interfaces of Modules]] == Various == * [[Documentation/Related | Links and Related Software]] 36 10 2013-02-15T21:19:56Z Dirk 2 /* Developers' Guide */ wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenOPAL in the Screenshots]] * [[Documentation/Installation | Download and Installation of OpenOPAL]] * [[Documentation/Modules | Module Documentation of OpenOPAL]] == Developers' Guide == * [[Documentation/Compiling | Developing and Compiling]] * Guidelines for Coding ** [[Documentation/coding/naming | Naming Conventions]] ** [[Documentation/coding/contracts | Contracts]] ** [[Documentation/coding/formatting | Code Formatting]] * Concepts behind OpenOpal ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Task Specific Interfaces of Modules]] == Various == * [[Documentation/Related | Links and Related Software]] 41 36 2013-02-15T21:26:15Z Dirk 2 /* Users' Guide */ wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenOPAL in the Screenshots]] * [[Installation | Installation of OpenOPAL]] * [[Documentation/Modules | Module Documentation of OpenOPAL]] == Developers' Guide == * [[Documentation/Compiling | Developing and Compiling]] * Guidelines for Coding ** [[Documentation/coding/naming | Naming Conventions]] ** [[Documentation/coding/contracts | Contracts]] ** [[Documentation/coding/formatting | Code Formatting]] * Concepts behind OpenOpal ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Task Specific Interfaces of Modules]] == Various == * [[Documentation/Related | Links and Related Software]] Documentation/Modules 0 11 11 2013-02-04T14:24:02Z Dirk 2 Created page with "'''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to op..." wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenOpal. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Not implemented, yet. === Direct, Deterministic Algorithms === * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>: Elitist Evolution Strategy with Covariance Matrix Adaptation]] * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>: Particle Swarm Optimization Algorithm]] == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] Documentation/Modules/OptAlgSimplex 0 12 12 2013-02-04T14:38:18Z Dirk 2 Created page with "[[Documentation/Modules | « back to module overview]] ==Summary== This optimization module is an implementation of the popular Nelder-Mead Simplex Algorithm (1965) [[#NelMead ..." wikitext text/x-wiki [[Documentation/Modules | « back to module overview]] ==Summary== This optimization module is an implementation of the popular Nelder-Mead Simplex Algorithm (1965) [[#NelMead | (1)]]. The SIMPLEX method is a standard direct, deterministic optimization algorithm, which is implemented in many numerical tools (e.g. as method <code>fminsearch.m</code> in the MATLAB(R) optimization toolbox or in [http://www.gnu.org/software/octave/ GNU Octave]). A good introduction is given by Wright [[#Wright | (2)]]. The algorithm works best for a small number of design variables (1-10, sometimes 1-20). It fails, for example, on the Rosenbrock function, if more than 10 design variables are given. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic |- ! Design Variables | Written for continuous variables. Discrete or mixed variables are NOT possible. |- ! Objectives | single-objective for minimization. No constraint handling. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The SIMPLEX algorithm is implemented using the paper of Wright [[#Wright | (2)]]. However, some extensions are made as e.g. the initialization is not given in the references. === Initialization === First, an initial simplex is generated. Here, a [http://en.wikipedia.org/wiki/Simplex simplex] is a body in the N-dimensional design space that has N+1 vertices. The vertices are connected by straight lines. For two (N=2) and three (N=3) design variables, a simplex is a triangle or tetrahedron, respectively. If the optimization problem provides an initial solution, this point is taken as first vertex of the simplex. If not, the initial simplex gets a random position obeying certain rules. We distinguish several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). {| border="1" cellspacing="0" ! colspan="3" | Problem Properties Given? || Action |- | <code>initial solution</code> || <code>initial search region</code> || <code>bounds</code> || |- |Yes || No || No || option <code>Initial Size of the Simplex</code> defines the absolute length of the simplex in each design variable direction. I.e. a simplex is constructed, such that the distance between each vertex and the plane generated by the remaining points has this length. |- |Yes or No || Yes || Yes or No || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the initial search region (i.e. difference upper to lower limit). Bounds are ignored. |- |Yes or No || No || Yes || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the bounds (i.e. difference upper to lower limit). |} === Optimization === The SIMPLEX method follows a deterministic procedure. Except the initialization, always one new point is generated and evaluated. Thus, parallelization is not implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== <span id="NelMead">1</span> Nelder, J. A. and Mead, R. "A Simplex Method for Function Minimization." Comput. J. 7, 308-313, 1965. <span id="Wright">2</span> M. H. Wright. "Direct search methods: once scorned, now respectable". In D. F. Griffiths and G. A. Watson, editors, Numerical Analysis 1995 (Proceedings of the 1995 Dundee Biennial Conference in Numerical Analysis), pages 191–208. Addison Wesley Longman, 1996. [[Documentation/Modules | « back to module overview]],[[Documentation/Modules | « back to module overview]] 13 12 2013-02-15T20:15:14Z Dirk 2 /* General */ wikitext text/x-wiki [[Documentation/Modules | « back to module overview]] ==Summary== This optimization module is an implementation of the popular Nelder-Mead Simplex Algorithm (1965) [[#NelMead | (1)]]. The SIMPLEX method is a standard direct, deterministic optimization algorithm, which is implemented in many numerical tools (e.g. as method <code>fminsearch.m</code> in the MATLAB(R) optimization toolbox or in [http://www.gnu.org/software/octave/ GNU Octave]). A good introduction is given by Wright [[#Wright | (2)]]. The algorithm works best for a small number of design variables (1-10, sometimes 1-20). It fails, for example, on the Rosenbrock function, if more than 10 design variables are given. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic |- ! Design Variables | Written for continuous variables. Discrete or mixed variables are NOT possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The SIMPLEX algorithm is implemented using the paper of Wright [[#Wright | (2)]]. However, some extensions are made as e.g. the initialization is not given in the references. === Initialization === First, an initial simplex is generated. Here, a [http://en.wikipedia.org/wiki/Simplex simplex] is a body in the N-dimensional design space that has N+1 vertices. The vertices are connected by straight lines. For two (N=2) and three (N=3) design variables, a simplex is a triangle or tetrahedron, respectively. If the optimization problem provides an initial solution, this point is taken as first vertex of the simplex. If not, the initial simplex gets a random position obeying certain rules. We distinguish several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). {| border="1" cellspacing="0" ! colspan="3" | Problem Properties Given? || Action |- | <code>initial solution</code> || <code>initial search region</code> || <code>bounds</code> || |- |Yes || No || No || option <code>Initial Size of the Simplex</code> defines the absolute length of the simplex in each design variable direction. I.e. a simplex is constructed, such that the distance between each vertex and the plane generated by the remaining points has this length. |- |Yes or No || Yes || Yes or No || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the initial search region (i.e. difference upper to lower limit). Bounds are ignored. |- |Yes or No || No || Yes || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the bounds (i.e. difference upper to lower limit). |} === Optimization === The SIMPLEX method follows a deterministic procedure. Except the initialization, always one new point is generated and evaluated. Thus, parallelization is not implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== <span id="NelMead">1</span> Nelder, J. A. and Mead, R. "A Simplex Method for Function Minimization." Comput. J. 7, 308-313, 1965. <span id="Wright">2</span> M. H. Wright. "Direct search methods: once scorned, now respectable". In D. F. Griffiths and G. A. Watson, editors, Numerical Analysis 1995 (Proceedings of the 1995 Dundee Biennial Conference in Numerical Analysis), pages 191–208. Addison Wesley Longman, 1996. [[Documentation/Modules | « back to module overview]],[[Documentation/Modules | « back to module overview]] 14 13 2013-02-15T20:16:12Z Dirk 2 /* References */ wikitext text/x-wiki [[Documentation/Modules | « back to module overview]] ==Summary== This optimization module is an implementation of the popular Nelder-Mead Simplex Algorithm (1965) [[#NelMead | (1)]]. The SIMPLEX method is a standard direct, deterministic optimization algorithm, which is implemented in many numerical tools (e.g. as method <code>fminsearch.m</code> in the MATLAB(R) optimization toolbox or in [http://www.gnu.org/software/octave/ GNU Octave]). A good introduction is given by Wright [[#Wright | (2)]]. The algorithm works best for a small number of design variables (1-10, sometimes 1-20). It fails, for example, on the Rosenbrock function, if more than 10 design variables are given. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic |- ! Design Variables | Written for continuous variables. Discrete or mixed variables are NOT possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The SIMPLEX algorithm is implemented using the paper of Wright [[#Wright | (2)]]. However, some extensions are made as e.g. the initialization is not given in the references. === Initialization === First, an initial simplex is generated. Here, a [http://en.wikipedia.org/wiki/Simplex simplex] is a body in the N-dimensional design space that has N+1 vertices. The vertices are connected by straight lines. For two (N=2) and three (N=3) design variables, a simplex is a triangle or tetrahedron, respectively. If the optimization problem provides an initial solution, this point is taken as first vertex of the simplex. If not, the initial simplex gets a random position obeying certain rules. We distinguish several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). {| border="1" cellspacing="0" ! colspan="3" | Problem Properties Given? || Action |- | <code>initial solution</code> || <code>initial search region</code> || <code>bounds</code> || |- |Yes || No || No || option <code>Initial Size of the Simplex</code> defines the absolute length of the simplex in each design variable direction. I.e. a simplex is constructed, such that the distance between each vertex and the plane generated by the remaining points has this length. |- |Yes or No || Yes || Yes or No || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the initial search region (i.e. difference upper to lower limit). Bounds are ignored. |- |Yes or No || No || Yes || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the bounds (i.e. difference upper to lower limit). |} === Optimization === The SIMPLEX method follows a deterministic procedure. Except the initialization, always one new point is generated and evaluated. Thus, parallelization is not implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== <span id="NelMead">1</span> Nelder, J. A. and Mead, R. "A Simplex Method for Function Minimization." Comput. J. 7, 308-313, 1965. <span id="Wright">2</span> M. H. Wright. "Direct search methods: once scorned, now respectable". In D. F. Griffiths and G. A. Watson, editors, Numerical Analysis 1995 (Proceedings of the 1995 Dundee Biennial Conference in Numerical Analysis), pages 191–208. Addison Wesley Longman, 1996. [[Documentation/Modules | « back to module overview]] 15 14 2013-02-15T20:16:36Z Dirk 2 wikitext text/x-wiki ==Summary== This optimization module is an implementation of the popular Nelder-Mead Simplex Algorithm (1965) [[#NelMead | (1)]]. The SIMPLEX method is a standard direct, deterministic optimization algorithm, which is implemented in many numerical tools (e.g. as method <code>fminsearch.m</code> in the MATLAB(R) optimization toolbox or in [http://www.gnu.org/software/octave/ GNU Octave]). A good introduction is given by Wright [[#Wright | (2)]]. The algorithm works best for a small number of design variables (1-10, sometimes 1-20). It fails, for example, on the Rosenbrock function, if more than 10 design variables are given. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic |- ! Design Variables | Written for continuous variables. Discrete or mixed variables are NOT possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The SIMPLEX algorithm is implemented using the paper of Wright [[#Wright | (2)]]. However, some extensions are made as e.g. the initialization is not given in the references. === Initialization === First, an initial simplex is generated. Here, a [http://en.wikipedia.org/wiki/Simplex simplex] is a body in the N-dimensional design space that has N+1 vertices. The vertices are connected by straight lines. For two (N=2) and three (N=3) design variables, a simplex is a triangle or tetrahedron, respectively. If the optimization problem provides an initial solution, this point is taken as first vertex of the simplex. If not, the initial simplex gets a random position obeying certain rules. We distinguish several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). {| border="1" cellspacing="0" ! colspan="3" | Problem Properties Given? || Action |- | <code>initial solution</code> || <code>initial search region</code> || <code>bounds</code> || |- |Yes || No || No || option <code>Initial Size of the Simplex</code> defines the absolute length of the simplex in each design variable direction. I.e. a simplex is constructed, such that the distance between each vertex and the plane generated by the remaining points has this length. |- |Yes or No || Yes || Yes or No || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the initial search region (i.e. difference upper to lower limit). Bounds are ignored. |- |Yes or No || No || Yes || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the bounds (i.e. difference upper to lower limit). |} === Optimization === The SIMPLEX method follows a deterministic procedure. Except the initialization, always one new point is generated and evaluated. Thus, parallelization is not implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== <span id="NelMead">1</span> Nelder, J. A. and Mead, R. "A Simplex Method for Function Minimization." Comput. J. 7, 308-313, 1965. <span id="Wright">2</span> M. H. Wright. "Direct search methods: once scorned, now respectable". In D. F. Griffiths and G. A. Watson, editors, Numerical Analysis 1995 (Proceedings of the 1995 Dundee Biennial Conference in Numerical Analysis), pages 191–208. Addison Wesley Longman, 1996. 16 15 2013-02-15T20:17:15Z Dirk 2 /* References */ wikitext text/x-wiki ==Summary== This optimization module is an implementation of the popular Nelder-Mead Simplex Algorithm (1965) [[#NelMead | (1)]]. The SIMPLEX method is a standard direct, deterministic optimization algorithm, which is implemented in many numerical tools (e.g. as method <code>fminsearch.m</code> in the MATLAB(R) optimization toolbox or in [http://www.gnu.org/software/octave/ GNU Octave]). A good introduction is given by Wright [[#Wright | (2)]]. The algorithm works best for a small number of design variables (1-10, sometimes 1-20). It fails, for example, on the Rosenbrock function, if more than 10 design variables are given. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic |- ! Design Variables | Written for continuous variables. Discrete or mixed variables are NOT possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The SIMPLEX algorithm is implemented using the paper of Wright [[#Wright | (2)]]. However, some extensions are made as e.g. the initialization is not given in the references. === Initialization === First, an initial simplex is generated. Here, a [http://en.wikipedia.org/wiki/Simplex simplex] is a body in the N-dimensional design space that has N+1 vertices. The vertices are connected by straight lines. For two (N=2) and three (N=3) design variables, a simplex is a triangle or tetrahedron, respectively. If the optimization problem provides an initial solution, this point is taken as first vertex of the simplex. If not, the initial simplex gets a random position obeying certain rules. We distinguish several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). {| border="1" cellspacing="0" ! colspan="3" | Problem Properties Given? || Action |- | <code>initial solution</code> || <code>initial search region</code> || <code>bounds</code> || |- |Yes || No || No || option <code>Initial Size of the Simplex</code> defines the absolute length of the simplex in each design variable direction. I.e. a simplex is constructed, such that the distance between each vertex and the plane generated by the remaining points has this length. |- |Yes or No || Yes || Yes or No || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the initial search region (i.e. difference upper to lower limit). Bounds are ignored. |- |Yes or No || No || Yes || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the bounds (i.e. difference upper to lower limit). |} === Optimization === The SIMPLEX method follows a deterministic procedure. Except the initialization, always one new point is generated and evaluated. Thus, parallelization is not implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== <span id="NelMead">1</span> Nelder, J. A. and Mead, R. "A Simplex Method for Function Minimization." Comput. J. 7, 308-313, 1965. <span id="Wright">2</span> M. H. Wright. "Direct search methods: once scorned, now respectable". In D. F. Griffiths and G. A. Watson, editors, Numerical Analysis 1995 (Proceedings of the 1995 Dundee Biennial Conference in Numerical Analysis), pages 191–208. Addison Wesley Longman, 1996. Documentation/Modules/OptAlgCMA 0 13 17 2013-02-15T20:20:20Z Dirk 2 Created page with "= The CMA-ES = ==Summary== This optimization module is an implementation of the Evolution Strategy with Covariance Matrix Adaptation (CMA-ES). Among the tree evolutionary oper..." wikitext text/x-wiki = The CMA-ES = ==Summary== This optimization module is an implementation of the Evolution Strategy with Covariance Matrix Adaptation (CMA-ES). Among the tree evolutionary operators (Recombination, Mutation, Selection), the mutation is considered the most important. Mutation is performed by sampling a Covariance Matrix. The parameters of the matrix (variances and correlation coefficients) are adapted by tracking the path of successful mutations. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - generates new solutions by sampling a probability function, however deterministic adaptation of the covariance matrix. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | yes |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently only described in the references (see below). ==Module Description== === Initialization === The algorithm distinguishes several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). === Optimization === The algorithm contains stochastic processes and operates with a population. Parallelization on the basis of the population size is implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== Detailed information is given at http://www.lri.fr/~hansen/ . 43 17 2013-02-15T21:44:59Z Admin 1 wikitext text/x-wiki ==Summary== This optimization module is an implementation of the Evolution Strategy with Covariance Matrix Adaptation (CMA-ES). Among the tree evolutionary operators (Recombination, Mutation, Selection), the mutation is considered the most important. Mutation is performed by sampling a Covariance Matrix. The parameters of the matrix (variances and correlation coefficients) are adapted by tracking the path of successful mutations. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - generates new solutions by sampling a probability function, however deterministic adaptation of the covariance matrix. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | yes |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently only described in the references (see below). ==Module Description== === Initialization === The algorithm distinguishes several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). === Optimization === The algorithm contains stochastic processes and operates with a population. Parallelization on the basis of the population size is implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== Detailed information is given at http://www.lri.fr/~hansen/ . Documentation/Modules/OptAlgOpO 0 14 18 2013-02-15T20:32:28Z Dirk 2 Created page with " = 1+1 Evolution Strategy = ==Summary== The ''1+1 Evolution Strategy with 1/5 Success Rule'' ('''(1+1)-ES''') is one of the simplest Evolution Strategies and has been p..." wikitext text/x-wiki = 1+1 Evolution Strategy = ==Summary== The ''1+1 Evolution Strategy with 1/5 Success Rule'' ('''(1+1)-ES''') is one of the simplest Evolution Strategies and has been proposed by Rechenberg [[#References | (1)]]. The algorithm has a population of two individuals: one parent '''x'''<sub>p</sub> and one child '''x'''<sub>c</sub>. The parent generates the child. The objective function value of the child ''f''('''x'''<sub>c</sub>) is computed and compared to its parent ''f''('''x'''<sub>p</sub>). If the child has a better fitness (lower objective function value), the child becomes the new parent, otherwise the parent stays. This algorithm is designed for continuous design variables and has limited performance for discrete design variables. Furthermore, the algorithm is limited to the minimization of a single (objective) function. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic |- ! Design Variables | | Designed for continuous variables. Limited capabilities for discrete and mixed design variables, preferably the number of discrete values is high (i.e. no binary problems!). Limited performance for highly mis-scaled and/or strongly correlated objective functions. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described as "pop-up help". ==Introduction== The (1+1)-ES has a population of two individuals, one parent and one child. Two natural inspired operators are considered, which are mutation and selection, by which the strategy iteratively approaches the optimum to a problem. Here we consider the minimization of a function ''f''('''x''') with a vector of design variables '''x'''. '''1. Initialization''' The algorithm starts with a single parent '''x'''<sub>p</sub>, whose fitness ''f''('''x'''<sub>p</sub>) is computed. '''2. Creating a Child''' A child '''x'''<sub>c</sub> is created by mutating the design variables of the parent: '''x'''<sub>c</sub> = '''x'''<sub>p</sub> + '''z''', where '''z''' is a random vector, with each component ''z''<sub>i</sub> taken from a normal distribution (i.e. a Gaussian distribution): ''z''<sub>i</sub> ~ ''N''(0,''S''<sup>2</sup>), with zero mean and standard deviation ''S''. The step size ''S'' controls the strength of the mutation and is adapted while optimizing the problem. '''3. Selecting the Next Parent''' In the selection step, the fitness of the child and parent is compared and the individual with the lower fitness becomes the parent for the next generation and the other individual is deleted. '''4. Step Size Adaptation''' The step size ''S'' controls the strength of the mutation. For the normally distributed mutation, ''S'' describes the radius of a circle around the parent, characterized that on average 62.5% of the children are within this circle. The step size should be adapted in order to take into account the convergence of the algorithm towards the minimum. In the beginning of an optimization, the parent may be far from the optimum and large step sizes are preferred. The step size should then decrease while approaching to the minimum. A relationship between ideal step size ''S'' and the fraction of improved children compared to their parent is given in the 1/5 success rule: :''Be N the number of design variables of the optimization problem, then after every N mutations, check how many successes have occurred over the preceding 10N mutations. If this number is less than 2N, multiply the step size by the factor 0.85; divide the step size by 0.85 if more than 2N successes occurred.'' Please note that one mutation means the creation of one child. '''5. Decision''' Repeat with Point 2, if no termination criterion is violated. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== 1. Rechenberg, I.: Evolutionsstrategie, Friedrich Frommann Verlag, 1973 42 18 2013-02-15T21:44:23Z Admin 1 wikitext text/x-wiki ==Summary== The ''1+1 Evolution Strategy with 1/5 Success Rule'' ('''(1+1)-ES''') is one of the simplest Evolution Strategies and has been proposed by Rechenberg [[#References | (1)]]. The algorithm has a population of two individuals: one parent '''x'''<sub>p</sub> and one child '''x'''<sub>c</sub>. The parent generates the child. The objective function value of the child ''f''('''x'''<sub>c</sub>) is computed and compared to its parent ''f''('''x'''<sub>p</sub>). If the child has a better fitness (lower objective function value), the child becomes the new parent, otherwise the parent stays. This algorithm is designed for continuous design variables and has limited performance for discrete design variables. Furthermore, the algorithm is limited to the minimization of a single (objective) function. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic |- ! Design Variables | | Designed for continuous variables. Limited capabilities for discrete and mixed design variables, preferably the number of discrete values is high (i.e. no binary problems!). Limited performance for highly mis-scaled and/or strongly correlated objective functions. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described as "pop-up help". ==Introduction== The (1+1)-ES has a population of two individuals, one parent and one child. Two natural inspired operators are considered, which are mutation and selection, by which the strategy iteratively approaches the optimum to a problem. Here we consider the minimization of a function ''f''('''x''') with a vector of design variables '''x'''. '''1. Initialization''' The algorithm starts with a single parent '''x'''<sub>p</sub>, whose fitness ''f''('''x'''<sub>p</sub>) is computed. '''2. Creating a Child''' A child '''x'''<sub>c</sub> is created by mutating the design variables of the parent: '''x'''<sub>c</sub> = '''x'''<sub>p</sub> + '''z''', where '''z''' is a random vector, with each component ''z''<sub>i</sub> taken from a normal distribution (i.e. a Gaussian distribution): ''z''<sub>i</sub> ~ ''N''(0,''S''<sup>2</sup>), with zero mean and standard deviation ''S''. The step size ''S'' controls the strength of the mutation and is adapted while optimizing the problem. '''3. Selecting the Next Parent''' In the selection step, the fitness of the child and parent is compared and the individual with the lower fitness becomes the parent for the next generation and the other individual is deleted. '''4. Step Size Adaptation''' The step size ''S'' controls the strength of the mutation. For the normally distributed mutation, ''S'' describes the radius of a circle around the parent, characterized that on average 62.5% of the children are within this circle. The step size should be adapted in order to take into account the convergence of the algorithm towards the minimum. In the beginning of an optimization, the parent may be far from the optimum and large step sizes are preferred. The step size should then decrease while approaching to the minimum. A relationship between ideal step size ''S'' and the fraction of improved children compared to their parent is given in the 1/5 success rule: :''Be N the number of design variables of the optimization problem, then after every N mutations, check how many successes have occurred over the preceding 10N mutations. If this number is less than 2N, multiply the step size by the factor 0.85; divide the step size by 0.85 if more than 2N successes occurred.'' Please note that one mutation means the creation of one child. '''5. Decision''' Repeat with Point 2, if no termination criterion is violated. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== 1. Rechenberg, I.: Evolutionsstrategie, Friedrich Frommann Verlag, 1973 Documentation/Modules/OptAlgMoCMA 0 15 19 2013-02-15T20:35:26Z Dirk 2 Created page with "= The Elitist Evolution Strategy with Covariance Matrix Adaptation = ==Summary== This optimization module is an implementation of the elitist Evolution Strategy with Covarianc..." wikitext text/x-wiki = The Elitist Evolution Strategy with Covariance Matrix Adaptation = ==Summary== This optimization module is an implementation of the elitist Evolution Strategy with Covariance Matrix Adaptation (CMA-ES) for single- and multi-objective optimization [[#References | (1)]], however it contains some modifications to the publication. The algorithm uses one or multiple parents. Each parent generates one or multiple children. The algorithm is elitist: Always the best individuals among all parents and children are selected as parents of the next generation. This algorithm is designed for continuous variables and can not handle discrete problems. Furthermore, the algorithm is implemented for minimizing a single and multiple objective function(s). ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - deterministic adaptation of the covariance matrix. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single- and multi-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described in the pop-up help. ==Module Description== === Initialization === The initial parents are randomly generated within the <code>initial search region</code> (if existing) or otherwise between the <code>bounds</code>. === Optimization === The algorithm contains stochastic processes and operates with a population. Parallelization on the basis of the population size is implemented. The (<code>mu+lambda</code>)-ES has a population of <code>mu</code> parents and <code>lambda</code> children. The population size depends on the number of objectives and the following values are recommended: # <code>mu=1</code> and <code>lambda >= 1</code> for ''single objective optimization''. # <code>mu=50</code> and <code>lambda = 1</code> , for ''multi-objective optimization'' (here it is recommended that each parent has only one child). While evolutionary algorithms typically use the 3 natural inspired operators mutation, recombination and selection, this algorithms uses mutation and selection only. The selection is elitist: Among all parents and children, the best <code>mu</code> individuals are selected as parents of the next generation. The mutation is based on a multivariate normal distribution and the mutation distribution is adapted by a deterministic rule: A child '''x'''<sub>c</sub> is created by mutating the design variables of the parent: '''x'''<sub>c</sub> = '''x'''<sub>p</sub> + '''z''', where '''z''' is a random vector, taken from a normal distribution (i.e. a Gaussian distribution): '''z''' ~ S * ''N''(0,'''C'''), with zero mean and covariance matrix '''C'''. The step size ''S'' controls the strength and the covariance matrix '''C''' the correlation of the mutation. The step size ''S'' and the covariance matrix '''C''' is adapted by a deterministic rule in order to take into account the convergence of the algorithm towards the minimum. In the beginning of an optimization, the parent may be far from the optimum and large step sizes are preferred. The step size should then decrease while approaching to the minimum. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== (1) Igel, C., N. Hansen and S. Roth (2007). Covariance Matrix Adaptation for Multi-objective Optimization. Evolutionary Computation, 15(1), pp.1-28 (2) http://www.lri.fr/~hansen 44 19 2013-02-15T21:45:26Z Admin 1 wikitext text/x-wiki ==Summary== This optimization module is an implementation of the elitist Evolution Strategy with Covariance Matrix Adaptation (CMA-ES) for single- and multi-objective optimization [[#References | (1)]], however it contains some modifications to the publication. The algorithm uses one or multiple parents. Each parent generates one or multiple children. The algorithm is elitist: Always the best individuals among all parents and children are selected as parents of the next generation. This algorithm is designed for continuous variables and can not handle discrete problems. Furthermore, the algorithm is implemented for minimizing a single and multiple objective function(s). ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - deterministic adaptation of the covariance matrix. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single- and multi-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described in the pop-up help. ==Module Description== === Initialization === The initial parents are randomly generated within the <code>initial search region</code> (if existing) or otherwise between the <code>bounds</code>. === Optimization === The algorithm contains stochastic processes and operates with a population. Parallelization on the basis of the population size is implemented. The (<code>mu+lambda</code>)-ES has a population of <code>mu</code> parents and <code>lambda</code> children. The population size depends on the number of objectives and the following values are recommended: # <code>mu=1</code> and <code>lambda >= 1</code> for ''single objective optimization''. # <code>mu=50</code> and <code>lambda = 1</code> , for ''multi-objective optimization'' (here it is recommended that each parent has only one child). While evolutionary algorithms typically use the 3 natural inspired operators mutation, recombination and selection, this algorithms uses mutation and selection only. The selection is elitist: Among all parents and children, the best <code>mu</code> individuals are selected as parents of the next generation. The mutation is based on a multivariate normal distribution and the mutation distribution is adapted by a deterministic rule: A child '''x'''<sub>c</sub> is created by mutating the design variables of the parent: '''x'''<sub>c</sub> = '''x'''<sub>p</sub> + '''z''', where '''z''' is a random vector, taken from a normal distribution (i.e. a Gaussian distribution): '''z''' ~ S * ''N''(0,'''C'''), with zero mean and covariance matrix '''C'''. The step size ''S'' controls the strength and the covariance matrix '''C''' the correlation of the mutation. The step size ''S'' and the covariance matrix '''C''' is adapted by a deterministic rule in order to take into account the convergence of the algorithm towards the minimum. In the beginning of an optimization, the parent may be far from the optimum and large step sizes are preferred. The step size should then decrease while approaching to the minimum. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== (1) Igel, C., N. Hansen and S. Roth (2007). Covariance Matrix Adaptation for Multi-objective Optimization. Evolutionary Computation, 15(1), pp.1-28 (2) http://www.lri.fr/~hansen Documentation/Modules/OptAlgMOPSO 0 16 20 2013-02-15T20:36:42Z Dirk 2 Created page with "= The Multi-Objective Particle Swarm Optimizer = ==Summary== This optimization module is an implementation of the particle swarm optimization algorithm for single- and multi-ob..." wikitext text/x-wiki = The Multi-Objective Particle Swarm Optimizer = ==Summary== This optimization module is an implementation of the particle swarm optimization algorithm for single- and multi-objective optimization [[#References | (1)]], however it contains some modifications to the publication. The algorithm reflects the natural movement of flocking birds. The algorithm is elitist: Always the best particles are kept as guides. This algorithm is designed for continuous variables and can not handle discrete problems. Furthermore, the algorithm is implemented for minimizing a single and multiple objective function(s). ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - stochastic adaptation of the velocities. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single- and multi-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial search region or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described in the pop-up help. ==Module Description== === Initialization === The initial particles are randomly generated within the <code>initial search region</code> (if existing) or otherwise between the <code>bounds</code>. === Optimization === The algorithm contains stochastic processes and operates with a set of particles. Parallelization on the basis of the number of particles is implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== (1) Sanaz Mostaghim. Multi-Objective Evolutionary Algorithms. Data Structures, Convergence, and Diversity. Paderborn, Germany, November 2004. 45 20 2013-02-15T21:46:18Z Admin 1 wikitext text/x-wiki ==Summary== This optimization module is an implementation of the particle swarm optimization algorithm for single- and multi-objective optimization [[#References | (1)]], however it contains some modifications to the publication. The algorithm reflects the natural movement of flocking birds. The algorithm is elitist: Always the best particles are kept as guides. This algorithm is designed for continuous variables and can not handle discrete problems. Furthermore, the algorithm is implemented for minimizing a single and multiple objective function(s). ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - stochastic adaptation of the velocities. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single- and multi-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial search region or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described in the pop-up help. ==Module Description== === Initialization === The initial particles are randomly generated within the <code>initial search region</code> (if existing) or otherwise between the <code>bounds</code>. === Optimization === The algorithm contains stochastic processes and operates with a set of particles. Parallelization on the basis of the number of particles is implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== (1) Sanaz Mostaghim. Multi-Objective Evolutionary Algorithms. Data Structures, Convergence, and Diversity. Paderborn, Germany, November 2004. Documentation/Modules/DoePlanner 0 17 21 2013-02-15T20:37:42Z Dirk 2 Created page with "= DoEPlanner - The Design Of Experiment Module = ==Summary== This module contains general implementation for Design of Experiment (DoE) plans. Currently, the Full Factorial an..." wikitext text/x-wiki = DoEPlanner - The Design Of Experiment Module = ==Summary== This module contains general implementation for Design of Experiment (DoE) plans. Currently, the Full Factorial and Latin Hypercube plan are implemented. For an introduction to DoE, see the [[Documentation/DoE | Introduction to Design of Experiment]]. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic or deterministic. |- ! Design Variables | continuous, discrete or mixed variables are possible. |- ! Objectives | not required, thus any number of objectives can be handled. |- ! Constraint handling | not required, thus any number of constraints can be handled. |- ! Boundary handling | not required. |- ! Initialization | Does not required initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the DoE. |- |} ===Options=== The options are currently only described in the references (see below) and as pop-up help. ==Module Description== === Initialization === Not required. === Algorithm === The algorithm may contain stochastic processes. Parallel evaluation of experiments is possible. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== Detailed information is given at [[Documentation/DoE]]. 46 21 2013-02-15T21:46:43Z Admin 1 /* DoEPlanner - The Design Of Experiment Module */ wikitext text/x-wiki ==Summary== This module contains general implementation for Design of Experiment (DoE) plans. Currently, the Full Factorial and Latin Hypercube plan are implemented. For an introduction to DoE, see the [[Documentation/DoE | Introduction to Design of Experiment]]. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic or deterministic. |- ! Design Variables | continuous, discrete or mixed variables are possible. |- ! Objectives | not required, thus any number of objectives can be handled. |- ! Constraint handling | not required, thus any number of constraints can be handled. |- ! Boundary handling | not required. |- ! Initialization | Does not required initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the DoE. |- |} ===Options=== The options are currently only described in the references (see below) and as pop-up help. ==Module Description== === Initialization === Not required. === Algorithm === The algorithm may contain stochastic processes. Parallel evaluation of experiments is possible. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== Detailed information is given at [[Documentation/DoE]]. Documentation/Modules/RandomSampling 0 18 22 2013-02-15T20:38:34Z Dirk 2 Created page with "= Random Sampling = ==Summary== This module contains a simple method for Design of Experiments: It just samples random points with a uniform distribution within the bounds. =..." wikitext text/x-wiki = Random Sampling = ==Summary== This module contains a simple method for Design of Experiments: It just samples random points with a uniform distribution within the bounds. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic |- ! Design Variables | continuous, discrete or mixed variables are possible |- ! Objectives | not required, thus any number of objectives can be handled. |- ! Constraint handling | not required, thus any number of constraints can be handled. |- ! Boundary handling | stays within given bounds. |- ! Initialization | Requires bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the DoE. |- |} ===Options=== The options are currently only described in the references (see below) and as pop-up help. ==Module Description== === Initialization === Not required. === Algorithm === The algorithm contains stochastic processes. Parallel evaluation of experiments is possible. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== General information is given at [[Documentation/DoE | Introduction to Design of Experiment]]. 47 22 2013-02-15T21:47:08Z Admin 1 /* Random Sampling */ wikitext text/x-wiki ==Summary== This module contains a simple method for Design of Experiments: It just samples random points with a uniform distribution within the bounds. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic |- ! Design Variables | continuous, discrete or mixed variables are possible |- ! Objectives | not required, thus any number of objectives can be handled. |- ! Constraint handling | not required, thus any number of constraints can be handled. |- ! Boundary handling | stays within given bounds. |- ! Initialization | Requires bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the DoE. |- |} ===Options=== The options are currently only described in the references (see below) and as pop-up help. ==Module Description== === Initialization === Not required. === Algorithm === The algorithm contains stochastic processes. Parallel evaluation of experiments is possible. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== General information is given at [[Documentation/DoE | Introduction to Design of Experiment]]. Documentation/Modules/ProblemSimple 0 19 23 2013-02-15T20:41:40Z Dirk 2 Created page with "= ProblemSimple - A Simple Optimization Problem = ==Summary== The module <code>ProblemSimple</code> contains a very simple optimization problem, which can be used to illustrate..." wikitext text/x-wiki = ProblemSimple - A Simple Optimization Problem = ==Summary== The module <code>ProblemSimple</code> contains a very simple optimization problem, which can be used to illustrate the optimization process. It contains a time delay, which allows to reduce the speed of evaluations. This can be used e.g. to show the convergence of an optimization algorithm in a presentation. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function. |- ! Design Variables | Continuous, discrete, or mixed variables. |- ! Objectives | single-objective for minimization. |- ! Constraints | none |- ! Boundaries | set to fixed value. |- ! Initial Search Region | not set. |- ! Typical X | not set. |- ! Initialization | sets problem properties. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | - |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 48 23 2013-02-15T21:47:42Z Admin 1 wikitext text/x-wiki ==Summary== The module <code>ProblemSimple</code> contains a very simple optimization problem, which can be used to illustrate the optimization process. It contains a time delay, which allows to reduce the speed of evaluations. This can be used e.g. to show the convergence of an optimization algorithm in a presentation. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function. |- ! Design Variables | Continuous, discrete, or mixed variables. |- ! Objectives | single-objective for minimization. |- ! Constraints | none |- ! Boundaries | set to fixed value. |- ! Initial Search Region | not set. |- ! Typical X | not set. |- ! Initialization | sets problem properties. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | - |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - Documentation/DoE 0 20 24 2013-02-15T20:44:04Z Dirk 2 Created page with "=Design of Experiments= == Introduction == Design of Experiments ('''DoE''') defines methods of how to plan and arrange experiments. We explain the method using the example of a..." wikitext text/x-wiki =Design of Experiments= == Introduction == Design of Experiments ('''DoE''') defines methods of how to plan and arrange experiments. We explain the method using the example of a baker in a bakery. The baker wants to analyze the effect of different settings of his oven to the quality of the resulting bread by conducting several experiments. === Target Values === We define the targets of experiments (here to improve the quality of the bread) as '''target values'''. === Input Parameters === All sources of influence on the target values are referred to as '''factors'''. Three different groups of factors are distinguished: # ''noise factors'': These factors cannot be controlled or controlling these factors is too expensive. As an example, the temperature and humidity in the bakery depends on the season and weather and cannot be controlled. # ''control factors'': These factors can be controlled. However, their influence on the target value is not of interest and thus, these factors are set constant. For example, the baker wants to leave his recipe for the bread unchanged. # ''signal factors'': These factors can be controlled. Their influence is of interest and their values are modified in the experiments. DoE is important when we have to analyze a process with multiple signal factors, in order to determine their effect on the target value(s). '''''Note:''' In the following, we will only consider signal factors. For simplicity, they are referred to as factors.'' === Factor Levels === For each factor, we may want to analyze different values. For example, we want to analyze an oven temperature of 185, 190, 195, and 200<sup>o</sup>C and a baking time of 45, 50, 55 and 60 minutes. These different values are referred to as ''factor levels''. === Experiment === One experiment is one combination of different factor levels and the corresponding target values for the experiment. For example, one experiment may be a temperature of 190<sup>o</sup>C and a baking time of 60 min. One experiment is also referred to as one '''factor level combination'''. === DoE Plan === The DoE plan defines which experiments are to be conducted and in which sequence they are conducted. The sequence may be important as environmental conditions like temperature may effect the target values as well as hysteresis effects. DoE plans differ in number of total experiments and the order of the experiments. The number of experiments strongly influences the information gain and the trust in the experiments. As references for DoE plans we recommend [ [[#klepp | 1]], [[#wikidoe | 2]] ]. == DoE Plans == A DoE plan can be considered as a set of rules describing how to choose factors, the number of factor levels, factor level values or value distributions, etc.. In the following, two different DoE plans are outlined. === Full Factorial === [[Image:DoEFullFactorial.png|frame|right|A two factor Full Factorial plan. Each square represents one possible experiment. The "X" denote the actual experiments that will be scheduled.]] For given numbers of factor levels for each variable, a limited number of different experiments can be conducted. A DoE plan with all possible experiments is referred to as '''Full Factorial''' plan: The number of factor levels may vary for the factors. All other plans use only a subset of all possible experiments. === Latin Hypercube === [[Image:DoELatinHypercube.png|frame|right|A two factor Latin Hypercube plan. Each square represents one possible experiment. The "X" denote the actual experiments that will be scheduled.]] Compared to the Full Factorial plan, the Latin Hypercube (LHC) sampling dramatically reduces the number of experiments (see e.g. [ [[#wikilhc | 3]] ]). So it is most useful for expensive experiments, whether they be money or time intensive. Latin Hypercube requires the same number of factor levels for all factors. The number of experiments of a LHC plan is equal to the number of factor levels and is independent on the number of factors. This makes it very scalable (O(1)) in respect of number of factors. The philosophy of LHC is to use every factor level exactly once. The figure on the right demonstrates a possible plan for 4 factor levels. As each factor level is only used once, each row and column in the figure must contain exactly one cross. Thus, LHC guaranties that for each factor, the entire range of factor levels is used. == Common Settings for all DoE Plans == The following list explains common settings for all DoE plans. === Number of Iterations === The testing of a set of experiments that a DoE plan proposes is referred to as one ''iteration''. If we would schedule three ''iterations'', each experiment (i.e. a certain factor level combination) in the set is tested exactly three times. Using more than one iteration is only necessary if the system to analyze is noisy (i.e. the target values are noisy), may contain a drift while testing, or produces hysteresis. === Random Scheduling === [[Image:DoERandomBlock.png|thumb|250px|right|Four different scheduling plans of six experiments resulting from DoE plan with three experiments and two iterations. The small double-bordered boxes outline the blocks.]] Without ''random scheduling'', the experiments are tested in a fixed order. With ''randomization'' activated, a random sequence for the experiment is set up. To what extend the randomization occurs depends on whether ''block building'' is active or not. ''Random scheduling'' may help to analyze effects like hysteresis, i.e. the previous experiment effects the outcome of the current experiment. If we run multiple iterations, the effect of hysteresis decreases because of statistical reasons. === Block Building === If ''block building'' is activated, all experiments of one iteration are tested. Then, all experiments of the next iteration are tested. If ''block building'' is '''de'''activated, experiments of different iterations may follow each other. ''Block building'', like ''random scheduling'', may reduce the effect that may occur because of the order in which the experiments get scheduled. While ''random scheduling'' may reduce the effect of subsequent experiments, activating ''block building'' may reduce the effect caused by external (long term) influences. These influences can be quality of the used materials, which may vary over time or depend on the supplier, human interaction with the machines or the accuracy of machines of the same type used for the experiments. == DoE in OpenOpal == A description for DoE in OpenOpal can be found in the module documentation (see [[Documentation/Modules/DoePlanner]]). == References == <span id="klepp">1</span> Wilhelm Kleppmann, Taschenbuch Versuchsplanung (4. Auflage) - Produkte und Prozesse optimieren, Carl Hanser Verlag Muenchen Wien, 2006 <span id="wikidoe">2</span> http://en.wikipedia.org/wiki/Design_of_experiments <span id="wikilhc">3</span> http://en.wikipedia.org/wiki/Latin_hypercube Datei:DoEFullFactorial.png 6 21 25 2013-02-15T20:44:41Z Dirk 2 wikitext text/x-wiki Datei:DoELatinHypercube.png 6 22 26 2013-02-15T20:45:14Z Dirk 2 wikitext text/x-wiki 27 26 2013-02-15T20:48:27Z Dirk 2 uploaded a new version of &quot;[[File:DoELatinHypercube.png]]&quot; wikitext text/x-wiki Datei:DoERandomBlock.png 6 24 29 2013-02-15T20:52:44Z Dirk 2 wikitext text/x-wiki Documentation/Optimization 0 25 30 2013-02-15T20:55:25Z Dirk 2 Created page with "=Optimization= == Introduction == Optimization searches for the best solution '''x'''* to a problem and can be defined as '''x'''* = argmin (''f''('''x''')) where ''f'' ..." wikitext text/x-wiki =Optimization= == Introduction == Optimization searches for the best solution '''x'''* to a problem and can be defined as '''x'''* = argmin (''f''('''x''')) where ''f'' is the function to be optimized (the objective function) and '''x''' are the design variables for which optimal settings have to be found. This definition can be extended to multiple objectives '''f''' and by constraints. == Some Important Expressions == === Manual vs. Automated Optimization === Optimization is an everyday task. For example, searching the fastest way to work or home is an optimization problem. We speak about ''automated'' optimization, if a computer algorithm solves the problem in an automated fashion, i.e. without user interaction. === The Objective Function === Optimization typically searches for the optimal solution to a problem. For automated optimization, the problem must be encoded in a mathematical function ''f'', which has to be either minimized or maximized. In OpenOpal, only minimization is considered as maximization can be expressed as: max(f) = - min(-f) === Design Variables === The optimal solution is searched by modifying the design variables '''x'''. The objective function depends on the design variables: f = f('''x'''). === Multiple Objectives === If multiple objectives '''f''' should be optimized, then a multi-objective optimization problem has to be solved. Some optimization algorithms search concurrently for multiple compromise solutions for the objectives (Pareto optimization) or a single compromise solution, defined as a weighed sum of all objectives. === Constraints === While the optimization algorithm tries to minimize all objectives, constraints simply have to be fulfilled. For example, the maximal stress in a truss should not exceed a certain limit. If the stress is below the limit, no advantage is gained. If the stress is above the limit, the solution is typically constrained by a penalty value, which increases with increasing constraint violation. === Direct vs. Indirect Search === In OpenOpal, we implement optimization algorithms that search a problem in an iterative fashion, i.e. by computing several different solutions to the problem. The best solution is returned. This iterative search can be either direct or indirect: '''Direct''' search uses only direct information (i.e. the objective and constraint value(s). '''Indirect''' algorithms use indirect information (i.e. gradient and/or higher order derivative information of the objective(s) and constraint(s)). === Stochastic vs. Deterministic Algorithms === While '''stochastic''' algorithms such as Evolutionary Algorithms and Particle Swarm use random values in their search method, '''deterministic''' algorithms like the Simplex Method or gradient based search do not. 31 30 2013-02-15T20:55:51Z Dirk 2 /* The Objective Function */ wikitext text/x-wiki =Optimization= == Introduction == Optimization searches for the best solution '''x'''* to a problem and can be defined as '''x'''* = argmin (''f''('''x''')) where ''f'' is the function to be optimized (the objective function) and '''x''' are the design variables for which optimal settings have to be found. This definition can be extended to multiple objectives '''f''' and by constraints. == Some Important Expressions == === Manual vs. Automated Optimization === Optimization is an everyday task. For example, searching the fastest way to work or home is an optimization problem. We speak about ''automated'' optimization, if a computer algorithm solves the problem in an automated fashion, i.e. without user interaction. === Objective Function === Optimization typically searches for the optimal solution to a problem. For automated optimization, the problem must be encoded in a mathematical function ''f'', which has to be either minimized or maximized. In OpenOpal, only minimization is considered as maximization can be expressed as: max(f) = - min(-f) === Design Variables === The optimal solution is searched by modifying the design variables '''x'''. The objective function depends on the design variables: f = f('''x'''). === Multiple Objectives === If multiple objectives '''f''' should be optimized, then a multi-objective optimization problem has to be solved. Some optimization algorithms search concurrently for multiple compromise solutions for the objectives (Pareto optimization) or a single compromise solution, defined as a weighed sum of all objectives. === Constraints === While the optimization algorithm tries to minimize all objectives, constraints simply have to be fulfilled. For example, the maximal stress in a truss should not exceed a certain limit. If the stress is below the limit, no advantage is gained. If the stress is above the limit, the solution is typically constrained by a penalty value, which increases with increasing constraint violation. === Direct vs. Indirect Search === In OpenOpal, we implement optimization algorithms that search a problem in an iterative fashion, i.e. by computing several different solutions to the problem. The best solution is returned. This iterative search can be either direct or indirect: '''Direct''' search uses only direct information (i.e. the objective and constraint value(s). '''Indirect''' algorithms use indirect information (i.e. gradient and/or higher order derivative information of the objective(s) and constraint(s)). === Stochastic vs. Deterministic Algorithms === While '''stochastic''' algorithms such as Evolutionary Algorithms and Particle Swarm use random values in their search method, '''deterministic''' algorithms like the Simplex Method or gradient based search do not. Documentation/Notation 0 26 32 2013-02-15T20:59:59Z Dirk 2 Created page with "= Notation = As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are writte..." wikitext text/x-wiki = Notation = As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. === Symbols === :{| cellpadding="5" width="95%" |- | ''f'', '''f''' | objective function(s) |- | ''x'', '''x''' | design variable(s) |- | ''g'', '''g''' | constraint(s) |- |} === Terminology === :{| cellpadding="5" width="95%" |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x''') and constraint(s) '''g'''('''x''')'''. |- |} 33 32 2013-02-15T21:00:44Z Dirk 2 wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''f'', '''f''' | objective function(s) |- | ''x'', '''x''' | design variable(s) |- | ''g'', '''g''' | constraint(s) |- |} == Terminology == :{| cellpadding="5" width="95%" |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x''') and constraint(s) '''g'''('''x''')'''. |- |} Download 0 47 34 2013-02-15T21:07:50Z Dirk 2 Created page with "= Download Source Code from Subversion Repository = . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The OpenOpal software is ver..." wikitext text/x-wiki = Download Source Code from Subversion Repository = . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The OpenOpal software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be dowloaded. Download the software with shell command: <pre> $ svn checkout {ToDo:Link to SVN}</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or a [http://subclipse.tigris.org/ subclipse] plugin for [http://www.eclipse.org/ eclipse]. 35 34 2013-02-15T21:08:05Z Dirk 2 /* Download Source Code from Subversion Repository */ wikitext text/x-wiki = Download Source Code = . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The OpenOpal software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be dowloaded. Download the software with shell command: <pre> $ svn checkout {ToDo:Link to SVN}</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or a [http://subclipse.tigris.org/ subclipse] plugin for [http://www.eclipse.org/ eclipse]. 39 35 2013-02-15T21:25:10Z Dirk 2 /* Download Source Code */ wikitext text/x-wiki = Download Source Code = . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The OpenOpal software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be dowloaded. Download the software with shell command: <pre> $ svn checkout {ToDo:Link to SVN}</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or an appropriate plug-in for your IDE. 40 39 2013-02-15T21:25:27Z Dirk 2 /* Download Source Code */ wikitext text/x-wiki = Download Source Code = . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The OpenOpal software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be downloaded. Download the software with shell command: <pre> $ svn checkout {ToDo:Link to SVN}</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or an appropriate plug-in for your IDE. 51 40 2013-02-15T21:51:25Z Admin 1 moved [[Documentation/Download/SVN]] to [[Documentation/Download]] wikitext text/x-wiki = Download Source Code = . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The OpenOpal software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be downloaded. Download the software with shell command: <pre> $ svn checkout {ToDo:Link to SVN}</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or an appropriate plug-in for your IDE. 53 51 2013-02-15T21:51:57Z Admin 1 /* Download Source Code */ wikitext text/x-wiki == Download Software == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . == Download Source Code == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The OpenOpal software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be downloaded. Download the software with shell command: <pre> $ svn checkout {ToDo:Link to SVN}</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or an appropriate plug-in for your IDE. 57 53 2013-02-15T21:55:49Z Admin 1 moved [[Documentation/Download]] to [[Download]] wikitext text/x-wiki == Download Software == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . == Download Source Code == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The OpenOpal software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be downloaded. Download the software with shell command: <pre> $ svn checkout {ToDo:Link to SVN}</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or an appropriate plug-in for your IDE. Documentation/Compiling 0 28 37 2013-02-15T21:21:16Z Dirk 2 Created page with "= Developing and Compiling OpenOpal = Check the [[Documentation/Software/Requirements | software requirements]] first! Then [[Documentation/Download/SVN | download]] the source ..." wikitext text/x-wiki = Developing and Compiling OpenOpal = Check the [[Documentation/Software/Requirements | software requirements]] first! Then [[Documentation/Download/SVN | download]] the source code. == Using an IDE == OpenOpal is currently developed with [http://www.netbeans.org/ NetBeans], however other platforms such as Eclipse [http://www.eclipse.org/ Eclipse] can also be used. Nevertheless, compiling and executing the software in a shell is also supported using Makefiles as build system. == Compiling in a Shell == Two platforms are currently tested: <ul> <li><b>Linux: </b> A typical standard implementation of Linux with a Java JDK should contain all required programs for compiling and running OpenOpal. </li> <li><b>Windows: </b> [http://www.cygwin.com/ Cygwin (R)] is used to compile OpenOpal on Windows(R) platforms. </li> </ul> Compiling on other platforms has not been tested. === Creating the Makefile === The Makefile is automatically generated by the script <tt>createMakefile</tt>. In a shell, go to the subfolder <tt>openopal/trunk</tt> and execute: <pre>$ ./createMakefile</pre> Enter <pre>$ make</pre> to list the possible actions. === Compiling the Source Code & Executing OpenOpal === For Linux systems enter <pre>$ make javac $ make gui</pre> to compile and start OpenOpal in GUI mode. For Windows systems enter <pre>$ make javac_cygwin $ make gui</pre> Documentation/Software/Requirements 0 29 38 2013-02-15T21:24:04Z Dirk 2 Created page with "* Compiling: JDK 1.6 or higher * Executing: JRE 1.6 or higher" wikitext text/x-wiki * Compiling: JDK 1.6 or higher * Executing: JRE 1.6 or higher MediaWiki:Sidebar 8 30 49 2013-02-15T21:49:43Z Admin 1 Created page with "* SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help * TOOLBOX *..." wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help * TOOLBOX * LANGUAGES 50 49 2013-02-15T21:50:51Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** download|download ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES 54 50 2013-02-15T21:52:30Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** download|download-description ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES 55 54 2013-02-15T21:53:32Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** download|Download ** screenshots|Screen Shots ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES 56 55 2013-02-15T21:53:48Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** Download|Download ** screenshots|Screen Shots ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES 59 56 2013-02-15T21:56:28Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** download|Download ** screenshots|Screen Shots ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES Documentation/Download/SVN 0 31 52 2013-02-15T21:51:25Z Admin 1 moved [[Documentation/Download/SVN]] to [[Documentation/Download]] wikitext text/x-wiki #REDIRECT [[Documentation/Download]] Main Page 0 2 60 2 2013-02-15T22:00:12Z Dirk 2 /* Welcome to OpenOpal */ wikitext text/x-wiki = Welcome to '''OpenOpal ''' = '''OpenOpal ''' is an '''Open''' Source software environment for '''OP'''timization '''A'''nd '''L'''earning, providing algorithms for automatic optimization, Design of Experiment, and Machine Learning. The software consists of a '''Core''', a Graphical User Interface ('''GUI''') and '''Module'''s. The Modules comprise all functionality such as optimization algorithm and interfaces to the problem to be optimized. OpenOpal is written in Java. To get into the project: * check the [[Screenshots | Screenshots]] to get an idea about the basic interaction with the software * then, check the [[Documentation | Documentation]]. * or simply [[Download | Download]] the executable jar (no compilation necessary). Contact: * [mailto:help@openopal.org help@openopal.org] Documentation/Related 0 33 61 2013-03-18T19:46:17Z Dirk 2 Created page with "=Links and Related Pages= == JAVA Implementations == * Optimization ** [http://www.aridolan.com/ofiles/ga/gaa/gaa.aspx GA Playground] * Neural Network and Data Mining ** [http:..." wikitext text/x-wiki =Links and Related Pages= == JAVA Implementations == * Optimization ** [http://www.aridolan.com/ofiles/ga/gaa/gaa.aspx GA Playground] * Neural Network and Data Mining ** [http://snarli.sourceforge.net/ SNARLI] ** [http://www.cs.waikato.ac.nz/~ml/weka/ WEKA] ** [http://rapid-i.com/ RapidMiner] == MATLAB Implementations == * Optimization ** [http://www.bionik.tu-berlin.de/user/niko/cmaesintro.html Evolution Strategy with Covariance Matrix Adaptation (CMA-ES)] * Neural Network and Data Mining ** [http://www.esat.kuleuven.ac.be/sista/lssvmlab/ Least Squares Support Vector Machines (LS-SVM)] 62 61 2013-03-18T19:48:14Z Dirk 2 wikitext text/x-wiki =Links and Related Pages= == JAVA Implementations == * Optimization ** [http://www.aridolan.com/ofiles/ga/gaa/gaa.aspx GA Playground] * Neural Network and Data Mining ** [http://snarli.sourceforge.net/ SNARLI] ** [http://www.cs.waikato.ac.nz/~ml/weka/ WEKA] ** [http://rapid-i.com/ RapidMiner] == MATLAB Implementations == * Neural Network and Data Mining ** [http://www.esat.kuleuven.ac.be/sista/lssvmlab/ Least Squares Support Vector Machines (LS-SVM)] == Multi-Language Implementations == * Optimization ** [https://www.lri.fr/~hansen/cmaesintro.html Evolution Strategy with Covariance Matrix Adaptation (CMA-ES)] Documentation/Compiling 0 28 63 37 2013-03-18T19:54:09Z Dirk 2 /* Using an IDE */ wikitext text/x-wiki = Developing and Compiling OpenOpal = Check the [[Documentation/Software/Requirements | software requirements]] first! Then [[Documentation/Download/SVN | download]] the source code. == Using an IDE == OpenOpal is currently developed with [http://www.netbeans.org/ NetBeans], as many windows are generated with the Swing framework. However, other platforms such as Eclipse [http://www.eclipse.org/ Eclipse] can also be used. Compiling and executing the software in a shell is also supported using <code>Makefile</code>s as build system. == Compiling in a Shell == Two platforms are currently tested: <ul> <li><b>Linux: </b> A typical standard implementation of Linux with a Java JDK should contain all required programs for compiling and running OpenOpal. </li> <li><b>Windows: </b> [http://www.cygwin.com/ Cygwin (R)] is used to compile OpenOpal on Windows(R) platforms. </li> </ul> Compiling on other platforms has not been tested. === Creating the Makefile === The Makefile is automatically generated by the script <tt>createMakefile</tt>. In a shell, go to the subfolder <tt>openopal/trunk</tt> and execute: <pre>$ ./createMakefile</pre> Enter <pre>$ make</pre> to list the possible actions. === Compiling the Source Code & Executing OpenOpal === For Linux systems enter <pre>$ make javac $ make gui</pre> to compile and start OpenOpal in GUI mode. For Windows systems enter <pre>$ make javac_cygwin $ make gui</pre> 103 63 2013-03-18T21:50:01Z Dirk 2 /* Developing and Compiling OpenOpal */ wikitext text/x-wiki Check the [[Documentation/Software/Requirements | software requirements]] first! Then [[Documentation/Download/SVN | download]] the source code. == Using an IDE == OpenOpal is currently developed with [http://www.netbeans.org/ NetBeans], as many windows are generated with the Swing framework. However, other platforms such as Eclipse [http://www.eclipse.org/ Eclipse] can also be used. Compiling and executing the software in a shell is also supported using <code>Makefile</code>s as build system. == Compiling in a Shell == Two platforms are currently tested: <ul> <li><b>Linux: </b> A typical standard implementation of Linux with a Java JDK should contain all required programs for compiling and running OpenOpal. </li> <li><b>Windows: </b> [http://www.cygwin.com/ Cygwin (R)] is used to compile OpenOpal on Windows(R) platforms. </li> </ul> Compiling on other platforms has not been tested. === Creating the Makefile === The Makefile is automatically generated by the script <tt>createMakefile</tt>. In a shell, go to the subfolder <tt>openopal/trunk</tt> and execute: <pre>$ ./createMakefile</pre> Enter <pre>$ make</pre> to list the possible actions. === Compiling the Source Code & Executing OpenOpal === For Linux systems enter <pre>$ make javac $ make gui</pre> to compile and start OpenOpal in GUI mode. For Windows systems enter <pre>$ make javac_cygwin $ make gui</pre> Documentation/Machine Learning 0 34 64 2013-03-18T19:57:02Z Dirk 2 Created page with "= Machine Learning = [[Documentation| <-- BACK <--]] == Introduction == Given some data, machine learning infers relations among them. Well known representatives of machine le..." wikitext text/x-wiki = Machine Learning = [[Documentation| <-- BACK <--]] == Introduction == Given some data, machine learning infers relations among them. Well known representatives of machine learning are Artificial Neural Networks and Support Vector Machines. The goal in OpenOpal is to use these techniques to build models either to speed up optimization runs or to post-process the result both [[Documentation/DoE | DoE]] and [[Documentation/Optimization | optimization]]. 65 64 2013-03-18T19:57:17Z Dirk 2 /* Machine Learning */ wikitext text/x-wiki == Introduction == Given some data, machine learning infers relations among them. Well known representatives of machine learning are Artificial Neural Networks and Support Vector Machines. The goal in OpenOpal is to use these techniques to build models either to speed up optimization runs or to post-process the result both [[Documentation/DoE | DoE]] and [[Documentation/Optimization | optimization]]. Documentation 0 10 66 41 2013-03-18T19:59:48Z Dirk 2 /* Developers' Guide */ wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenOPAL in the Screenshots]] * [[Installation | Installation of OpenOPAL]] * [[Documentation/Modules | Module Documentation of OpenOPAL]] == Developers' Guide == * [[Documentation/Compiling | Developing and Compiling]] * Guidelines for Coding ** [[Documentation/coding/naming | Naming Conventions]] ** [[Documentation/coding/contracts | Contracts]] ** [[Documentation/coding/formatting | Code Formatting]] * Concepts behind OpenOpal ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Task Specific Interfaces of Modules]] == Various == * [[Documentation/Related | Links and Related Software]] 67 66 2013-03-18T20:00:47Z Dirk 2 /* Developers' Guide */ wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenOPAL in the Screenshots]] * [[Installation | Installation of OpenOPAL]] * [[Documentation/Modules | Module Documentation of OpenOPAL]] == Developers' Guide == * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenOpal ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Task Specific Interfaces of Modules]] == Various == * [[Documentation/Related | Links and Related Software]] 68 67 2013-03-18T20:02:04Z Dirk 2 /* Developers' Guide */ wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenOPAL in the Screenshots]] * [[Installation | Installation of OpenOPAL]] * [[Documentation/Modules | Module Documentation of OpenOPAL]] == Developers' Guide == * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenOpal ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Task Specific Interfaces of Modules]] == Various == * [[Documentation/Related | Links and Related Software]] 87 68 2013-03-18T20:42:15Z Dirk 2 /* Developers' Guide */ wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenOPAL in the Screenshots]] * [[Installation | Installation of OpenOPAL]] * [[Documentation/Modules | Module Documentation of OpenOPAL]] == Developers' Guide == * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenOpal ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Task Specific Interfaces of Modules]] == Various == * [[Documentation/Related | Links and Related Software]] 93 87 2013-03-18T21:00:30Z Dirk 2 /* Developers' Guide */ wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenOPAL in the Screenshots]] * [[Installation | Installation of OpenOPAL]] * [[Documentation/Modules | Module Documentation of OpenOPAL]] == Developers' Guide == * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenOpal ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] Documentation/Modules/TheCode 0 35 69 2013-03-18T20:18:04Z Dirk 2 Created page with "OpenOpal consists of 3 parts # the GUI # the Core # many Modules == The GUI == The graphical user interface (GUI) allows setting complex systems by clicking and dragging. It..." wikitext text/x-wiki OpenOpal consists of 3 parts # the GUI # the Core # many Modules == The GUI == The graphical user interface (GUI) allows setting complex systems by clicking and dragging. It allows to add or remove <code>Modules</code> and to define their interactions by so called <code>Connections</code>. == The Core == The <code>Core</code> handles all file operation as well as provides the basic functionality such that <code>Modules</code> can be implemented. == The Modules == The <code>Modules</code> contain all functionality such as optimization algorithms, protocol functions, visualization of results, and optimization problems. All <code>Modules</code> must implement the interface [ <code>IModule</code>] Documentation/Modules/IModule 0 36 70 2013-03-18T20:19:54Z Dirk 2 Created page with "=Interface <tt>IModule</tt>: Guidelines for Writing Modules= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of met..." wikitext text/x-wiki =Interface <tt>IModule</tt>: Guidelines for Writing Modules= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <i>Module</i> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt>. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <i>Module</i> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a Module #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <i>Module</i> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <i>Module</i> is set up correctly, e.g. #** are the <tt>Options</tt> correct? #** are all required Connections of the <i>Module</i> available (e.g. an optimization algorithm may require one connection to a problem) #** do the settings (e.g. Options) agree with the properties of connected <i>Modules</i>? #* checking requires several steps: #*# if the <i>Module</i> is connected to other <i>Modules</i>, it should first #*#* call <tt>check()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected <i>Module</i>’s check is unsuccessful (i.e. a non-empty string is returned) #*# if checking the connected <i>Modules</i> was successful, the <i>Module</i> should check itself and return a non-empty string if checking fails # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long SystemTime)</tt> == ( '''ToDo: This does not work System time [milli sec] is too long to guaranty that no conflict.''' ) # Functionality #* initialize <i>Modules</i> such that executing optimizations or learning processes is possible #* Initialization requires several steps: #*# check if the argument (SystemTime) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <i>Module</i> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected <i>Module</i> fails to initialize #*# If the initialization of the connected <i>Modules</i> is successful, it should then get the properties of the connected <i>Modules</i> #*#* return a message, if any connected <i>Module</i> fails to return properties #*# Initialize itself and return a string if initialization fails # Objectives #* initialization should never lead to exceptions #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus the SystemTime as argument to this method should help avoiding unnecessary initializations. # Advanced Features #* the <i>Module</i> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the <i>Module</i> are changed #** the connections of the <i>Module</i> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <i>Module</i>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A <i>Module</i> such as an optimization algorithm should return the problem properties when it this <i>Module</i> is called. # Objectives #* get information about <i>Module</i> properties for checking or debugging user settings == Summary == # properties of a <i>Module</i> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 71 70 2013-03-18T20:24:13Z Dirk 2 /* Interface IModule: Guidelines for Writing Modules */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <i>Module</i> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <i>Module</i> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a Module #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <i>Module</i> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <i>Module</i> is set up correctly, e.g. #** are the <tt>Options</tt> correct? #** are all required Connections of the <i>Module</i> available (e.g. an optimization algorithm may require one connection to a problem) #** do the settings (e.g. Options) agree with the properties of connected <i>Modules</i>? #* checking requires several steps: #*# if the <i>Module</i> is connected to other <i>Modules</i>, it should first #*#* call <tt>check()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected <i>Module</i>’s check is unsuccessful (i.e. a non-empty string is returned) #*# if checking the connected <i>Modules</i> was successful, the <i>Module</i> should check itself and return a non-empty string if checking fails # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long SystemTime)</tt> == ( '''ToDo: This does not work System time [milli sec] is too long to guaranty that no conflict.''' ) # Functionality #* initialize <i>Modules</i> such that executing optimizations or learning processes is possible #* Initialization requires several steps: #*# check if the argument (SystemTime) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <i>Module</i> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected <i>Module</i> fails to initialize #*# If the initialization of the connected <i>Modules</i> is successful, it should then get the properties of the connected <i>Modules</i> #*#* return a message, if any connected <i>Module</i> fails to return properties #*# Initialize itself and return a string if initialization fails # Objectives #* initialization should never lead to exceptions #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus the SystemTime as argument to this method should help avoiding unnecessary initializations. # Advanced Features #* the <i>Module</i> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the <i>Module</i> are changed #** the connections of the <i>Module</i> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <i>Module</i>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A <i>Module</i> such as an optimization algorithm should return the problem properties when it this <i>Module</i> is called. # Objectives #* get information about <i>Module</i> properties for checking or debugging user settings == Summary == # properties of a <i>Module</i> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 72 71 2013-03-18T20:26:48Z Dirk 2 wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a Module #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, e.g. #** are the <tt>Options</tt> correct? #** are all required Connections of the <tt>Modules</tt> available (e.g. an optimization algorithm may require one connection to a problem) #** do the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the<tt>Modules</tt> is connected to other <i>Modules</i>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected<tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned) #*# if checking the connected <tt>Modules</tt> was successful, the<tt>Modules</tt> should check itself and return a non-empty string if checking fails # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long SystemTime)</tt> == ( '''ToDo: This does not work System time [milli sec] is too long to guaranty that no conflict.''' ) # Functionality #* initialize <i>Modules</i> such that executing optimizations or learning processes is possible #* Initialization requires several steps: #*# check if the argument (SystemTime) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the<tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected<tt>Modules</tt> fails to initialize #*# If the initialization of the connected <i>Modules</i> is successful, it should then get the properties of the connected <i>Modules</i> #*#* return a message, if any connected<tt>Modules</tt> fails to return properties #*# Initialize itself and return a string if initialization fails # Objectives #* initialization should never lead to exceptions #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus the SystemTime as argument to this method should help avoiding unnecessary initializations. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this<tt>Modules</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 73 72 2013-03-18T20:27:15Z Dirk 2 /* Method void setOptions(Options o) */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, e.g. #** are the <tt>Options</tt> correct? #** are all required Connections of the <tt>Modules</tt> available (e.g. an optimization algorithm may require one connection to a problem) #** do the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the<tt>Modules</tt> is connected to other <i>Modules</i>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected<tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned) #*# if checking the connected <tt>Modules</tt> was successful, the<tt>Modules</tt> should check itself and return a non-empty string if checking fails # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long SystemTime)</tt> == ( '''ToDo: This does not work System time [milli sec] is too long to guaranty that no conflict.''' ) # Functionality #* initialize <i>Modules</i> such that executing optimizations or learning processes is possible #* Initialization requires several steps: #*# check if the argument (SystemTime) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the<tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected<tt>Modules</tt> fails to initialize #*# If the initialization of the connected <i>Modules</i> is successful, it should then get the properties of the connected <i>Modules</i> #*#* return a message, if any connected<tt>Modules</tt> fails to return properties #*# Initialize itself and return a string if initialization fails # Objectives #* initialization should never lead to exceptions #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus the SystemTime as argument to this method should help avoiding unnecessary initializations. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this<tt>Modules</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 74 73 2013-03-18T20:28:30Z Dirk 2 /* Method String check() */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the<tt>Modules</tt> is connected to other <i>Modules</i>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected<tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned) #*# if checking the connected <tt>Modules</tt> was successful, the<tt>Modules</tt> should check itself and return a non-empty string if checking fails # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long SystemTime)</tt> == ( '''ToDo: This does not work System time [milli sec] is too long to guaranty that no conflict.''' ) # Functionality #* initialize <i>Modules</i> such that executing optimizations or learning processes is possible #* Initialization requires several steps: #*# check if the argument (SystemTime) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the<tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected<tt>Modules</tt> fails to initialize #*# If the initialization of the connected <i>Modules</i> is successful, it should then get the properties of the connected <i>Modules</i> #*#* return a message, if any connected<tt>Modules</tt> fails to return properties #*# Initialize itself and return a string if initialization fails # Objectives #* initialization should never lead to exceptions #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus the SystemTime as argument to this method should help avoiding unnecessary initializations. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this<tt>Modules</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 75 74 2013-03-18T20:28:54Z Dirk 2 /* Method String check() */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected<tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned) #*# if checking the connected <tt>Modules</tt> was successful, the<tt>Modules</tt> should check itself and return a non-empty string if checking fails # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long SystemTime)</tt> == ( '''ToDo: This does not work System time [milli sec] is too long to guaranty that no conflict.''' ) # Functionality #* initialize <i>Modules</i> such that executing optimizations or learning processes is possible #* Initialization requires several steps: #*# check if the argument (SystemTime) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the<tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected<tt>Modules</tt> fails to initialize #*# If the initialization of the connected <i>Modules</i> is successful, it should then get the properties of the connected <i>Modules</i> #*#* return a message, if any connected<tt>Modules</tt> fails to return properties #*# Initialize itself and return a string if initialization fails # Objectives #* initialization should never lead to exceptions #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus the SystemTime as argument to this method should help avoiding unnecessary initializations. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this<tt>Modules</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 76 75 2013-03-18T20:29:35Z Dirk 2 /* Method String check() */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long SystemTime)</tt> == ( '''ToDo: This does not work System time [milli sec] is too long to guaranty that no conflict.''' ) # Functionality #* initialize <i>Modules</i> such that executing optimizations or learning processes is possible #* Initialization requires several steps: #*# check if the argument (SystemTime) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the<tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected<tt>Modules</tt> fails to initialize #*# If the initialization of the connected <i>Modules</i> is successful, it should then get the properties of the connected <i>Modules</i> #*#* return a message, if any connected<tt>Modules</tt> fails to return properties #*# Initialize itself and return a string if initialization fails # Objectives #* initialization should never lead to exceptions #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus the SystemTime as argument to this method should help avoiding unnecessary initializations. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this<tt>Modules</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 77 76 2013-03-18T20:31:11Z Dirk 2 /* Method String init(long SystemTime) */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <i>Modules</i> such that executing optimizations or learning processes is possible #* Initialization requires several steps: #*# check if the argument (SystemTime) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the<tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <i>Modules</i> and #*#* return a message, if any connected<tt>Modules</tt> fails to initialize #*# If the initialization of the connected <i>Modules</i> is successful, it should then get the properties of the connected <i>Modules</i> #*#* return a message, if any connected<tt>Modules</tt> fails to return properties #*# Initialize itself and return a string if initialization fails # Objectives #* initialization should never lead to exceptions #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus the SystemTime as argument to this method should help avoiding unnecessary initializations. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this<tt>Modules</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 78 77 2013-03-18T20:33:23Z Dirk 2 /* Method String init(long index) */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this module # Objectives #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this<tt>Modules</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 79 78 2013-03-18T20:34:40Z Dirk 2 /* Method int getID() */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this<tt>Modules</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 80 79 2013-03-18T20:35:09Z Dirk 2 /* Method void setID(int id) */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <tt>Module</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <i>Modules</i> can identify to which other <i>Modules</i> they are connected == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 81 80 2013-03-18T20:35:34Z Dirk 2 /* Method void setID(int id) */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <tt>Module</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a<tt>Modules</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <i>Modules</i> do not change while they are checked! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 82 81 2013-03-18T20:36:28Z Dirk 2 /* Summary */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <tt>Module</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings == Summary == # properties of a <tt>Module</tt> should only change when the Method <tt>init()</tt> is called. #* this guarantees that <tt>Modules</tt> do not change while they are checked or other <tt>Modules</tt> are running! = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 83 82 2013-03-18T20:36:40Z Dirk 2 /* Summary */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <tt>Module</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 84 83 2013-03-18T20:37:53Z Dirk 2 /* Method String init(long index) */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> '''Summary''' Properties of a <tt>Module</tt> should only change when the Method <tt>init()</tt> is called. This guarantees that <tt>Modules</tt> do not change while they are checked or other <tt>Modules</tt> are running! == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <tt>Module</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings = Open Items = * 'path handling for files','The path handling of openopal: files that are eg. written by the protocoller are placed in the source directory of the code. Instead the should be a working directory (e.g. the one where one calls openopal from). In addition, the file browsing dialog should remember the working directory (of the previous call).' * 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. 85 84 2013-03-18T20:38:20Z Dirk 2 /* Open Items */ wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenOpal must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> '''Summary''' Properties of a <tt>Module</tt> should only change when the Method <tt>init()</tt> is called. This guarantees that <tt>Modules</tt> do not change while they are checked or other <tt>Modules</tt> are running! == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <tt>Module</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings Documentation/OpenItems 0 37 86 2013-03-18T20:39:33Z Dirk 2 Created page with "== Thead Save == 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this i..." wikitext text/x-wiki == Thead Save == 'Thead save','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. One solution to this is to synchronize critical methods. ','Methods like evaluate() or init() are currently not thread save. Multiple (optimization) algorithms may call these methods. Documentation/Modules/Interfaces 0 38 88 2013-03-18T20:44:31Z Dirk 2 Created page with "==Basics== The basic element of each OpenOpal optimization or learning environment is still the <code>Module</code>. Each optimization problem, each optimization algorithm and e..." wikitext text/x-wiki ==Basics== The basic element of each OpenOpal optimization or learning environment is still the <code>Module</code>. Each optimization problem, each optimization algorithm and each learning algorithm is a module. A class that is used as a module must implement the interface <code>org.openopal.core.modules.IModule</code> (see [Documentation/IModule IModule]). The whole structure of modules in OpenOpal is based on interfaces. The reason for this is that classes that are used as modules may be part of a class hierarchy and thus they cannot inherit from a basic module class. There are modules that can be run, e.g. optimization algorithms. All these modules implement the interface org.openopal.core.modules.IRunnable. Each optimization setup consists of at least two linked modules: a problem and an optimizer. The interfaces for these modules are org.openopal.core.modules.optimization.IEvaluable and IEvaluator, respecively. The corresponding pair for a learning task is org.openopal.core.modules.learning.IDataSource and IDataSink. Modules can be linked between other modules. E.g. the protocoller is a module that you can link between an optimizer and a problem. In such a case, all modules except the optimizer must implement the interface IEvaluable and all modules except the problem must implement the interface IEvaluator. This means that the modules form a chain that looks like this (here, two intermediate modules are shown): <pre> IEvaluator | IEvaluable and IEvaluator | IEvaluable and IEvaluator | IEvaluable </pre> where the topmost evaluator is the optimizer and the bottommost evaluable is the optimization problem. The meaning of this picure is that the optimizer produces points and sends them through the chain to the problem. The problem evaluates the points, assinging each point its objective value(s). These are read by the optimizer which then tries to create better points, etc. The same kind of interaction chain is possible for learners and data sources. But there, the information flow is mainly in unidirectional: from the data source to the data sink. The class that represents solutions to optimization problems is Solution. Every instance of this class is a solution to the optimization problem. Each Solution object contains the design variables that define the solution and one or more objective values that assess the quality of the solution. The goal of each optimization algorithm is to find a Solution with minimal objective values. An object of the class Data represents the data involved in a particular learning setup. It is passed from data source to data sink. Often, modules look similar, and someone writing a new module doens't want to implement all interface methods by hand. For these cases, we wrote the abstract classes org.openopal.core.modules.optimization.Optimizer and Problem and learning.Learner. These classes already implement almost all necessary methods. A writer of an optimizer just has to implement the algorithm itself and no other details (e.g. linking, checking etc.). Similarly, a writer of a problem just has to implement the evaluate method of the Problem class. In a learner, the method to override is run(). It executes the learning algorithm. ==Documentation and Contracts== (Almost) each interface, class and method has a JavaDoc comment that defines its documentation. The documentation of methods consists of descriptions of the purpose, the parameters and the return value. We provided many methods with contracts. These are also described on the page https://www.openopal.org/wiki/index.php/Documentation:Contracts. It is important to know these contracts when using (or modifying) methods. Invariants can only be guaranteed if they are established by each constructor and not violated by any method. It should be impossible to access members of an object from outside the object without using a method of the object. That's why members that are part of invariants have to be cloned when they enter or leave the object. ==The Interfaces== ===IModule=== This is the basic interface implemented by all modules. It contains methods for the initialisation and checking of the module and for the management of the options of the module. ===IRunnable=== This interfaces is implemented by all modules that can be run. When a module is run, it executes its optimization algorithm. In the future this could be any kind of algorithm. The interface contains methods to start and stop the execution of the module. ===IEvaluable=== Every module that represents an optimization problem implements the interface IEvaluable. This means that the module can evaluate a given solution. To that end, it looks at the design variables of a solution object it gets from an optimizer and sets the objective value(s) of that object accordingly. If a module is linked before a problem module, it must implement IEvaluable and delegate the evaluation of the solutions to the problem module. Thus, the optmimizer doesn't know if the module right after it is the problem itself or an intermediate module, it just calls the evaluate method of its successor module. IEvaluable contains methods to evaluate one solution or an array of solutions and a method to get the properties of the problem. ===IEvaluator=== A module that can call an evaluable to evaluate solutions implements the interface IEvaluator. Normally, an evaluator is an optimizer module, but any intermediate module between the optimizer and the problem must implement this interface as well. Otherwise, it wouldn't be able to call the problem to evaluate the solutions. IEvaluator contains methods to get and set the references to the evaluables and to check if these links are OK. ===IDataSource=== A module that provides data. This can be a file reader, the protocoller, or other modules that can produce or store data. The getData() method is the most important one. ===IDataSink=== A module implementing this interface represents a learner. It is linked with a data source and processes the given data. Very different kinds of processing are possible. A data viewer can just display the data, a neural network can learn a function from the data or a statistics module can compute some statistics on the data etc. 89 88 2013-03-18T20:51:34Z Dirk 2 /* Basics */ wikitext text/x-wiki ==Basics== The basic element of each OpenOpal optimization or learning environment is still the <code>Module</code>. Each optimization problem, each optimization algorithm and each learning algorithm is a module. A class that is used as a module must implement the interface <code>org.openopal.core.modules.IModule</code> (see [[Documentation/IModule | IModule]]). The whole structure of modules in OpenOpal is based on interfaces. The reason for this is that classes that are used as <code>Modules</code> may be part of a class hierarchy and thus they cannot inherit from a basic module class. There are <code>Modules</code> that can be run, e.g. optimization algorithms. All these modules implement the interface <code>org.openopal.core.modules.IRunnable</code>. Each optimization setup consists of at least two linked <code>Modules</code>: a problem and an optimizer. The interfaces for these modules are <code>org.openopal.core.modules.optimization.IEvaluable</code> and <code>IEvaluator</code>, respecively. The corresponding pair for a learning task is <code>org.openopal.core.modules.learning.IDataSource</code> and <code>IDataSink</code>. Modules can be linked between other modules. E.g. the protocoller is a <code>Module</code> that you can link between an optimizer and a problem. In such a case, all <code>Modules</code> except the optimizer must implement the interface <code>Evaluable</code> and all modules except the problem must implement the interface <code>IEvaluator</code>. This means that the modules form a chain that looks like this (here, two intermediate modules are shown): <pre> [IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable] </pre> where the topmost evaluator is the optimizer and the bottommost evaluable is the optimization problem. The meaning of this picture is that the optimizer produces points and sends them through the chain to the problem. The problem evaluates the points, assigning each point its objective value(s). These are read by the optimizer which then tries to create better points, etc. The same kind of interaction chain is possible for learners and data sources. But there, the information flow is mainly in unidirectional: from the data source to the data sink. The class that represents solutions to optimization problems is <code>Solution</code>. Every instance of this class is a solution to the optimization problem. Each Solution object contains the design variables that define the solution and one or more objective values that assess the quality of the solution. The goal of each optimization algorithm is to find a Solution with minimal objective values. An object of the class Data represents the data involved in a particular learning setup. It is passed from data source to data sink. Often, modules look similar, and someone writing a new module doesn't want to implement all interface methods by hand. For these cases, we wrote the abstract classes <code>org.openopal.core.modules.optimization.Optimizer</code> and Problem and <code>learning.Learner</code>. These classes already implement almost all necessary methods. A writer of an optimizer just has to implement the algorithm itself and no other details (e.g. linking, checking etc.). Similarly, a writer of a problem just has to implement the evaluate method of the <code>Problem</code> class. In a learner, the method to override is run(). It executes the learning algorithm. ==Documentation and Contracts== (Almost) each interface, class and method has a JavaDoc comment that defines its documentation. The documentation of methods consists of descriptions of the purpose, the parameters and the return value. We provided many methods with contracts. These are also described on the page https://www.openopal.org/wiki/index.php/Documentation:Contracts. It is important to know these contracts when using (or modifying) methods. Invariants can only be guaranteed if they are established by each constructor and not violated by any method. It should be impossible to access members of an object from outside the object without using a method of the object. That's why members that are part of invariants have to be cloned when they enter or leave the object. ==The Interfaces== ===IModule=== This is the basic interface implemented by all modules. It contains methods for the initialisation and checking of the module and for the management of the options of the module. ===IRunnable=== This interfaces is implemented by all modules that can be run. When a module is run, it executes its optimization algorithm. In the future this could be any kind of algorithm. The interface contains methods to start and stop the execution of the module. ===IEvaluable=== Every module that represents an optimization problem implements the interface IEvaluable. This means that the module can evaluate a given solution. To that end, it looks at the design variables of a solution object it gets from an optimizer and sets the objective value(s) of that object accordingly. If a module is linked before a problem module, it must implement IEvaluable and delegate the evaluation of the solutions to the problem module. Thus, the optmimizer doesn't know if the module right after it is the problem itself or an intermediate module, it just calls the evaluate method of its successor module. IEvaluable contains methods to evaluate one solution or an array of solutions and a method to get the properties of the problem. ===IEvaluator=== A module that can call an evaluable to evaluate solutions implements the interface IEvaluator. Normally, an evaluator is an optimizer module, but any intermediate module between the optimizer and the problem must implement this interface as well. Otherwise, it wouldn't be able to call the problem to evaluate the solutions. IEvaluator contains methods to get and set the references to the evaluables and to check if these links are OK. ===IDataSource=== A module that provides data. This can be a file reader, the protocoller, or other modules that can produce or store data. The getData() method is the most important one. ===IDataSink=== A module implementing this interface represents a learner. It is linked with a data source and processes the given data. Very different kinds of processing are possible. A data viewer can just display the data, a neural network can learn a function from the data or a statistics module can compute some statistics on the data etc. 90 89 2013-03-18T20:55:30Z Dirk 2 /* Basics */ wikitext text/x-wiki ==Basics== The basic element of each OpenOpal optimization or learning environment is still the <code>Module</code>. Each optimization problem, each optimization algorithm and each learning algorithm is a module. A class that is used as a module must implement the interface <code>org.openopal.core.modules.IModule</code> (see [[Documentation/IModule | IModule]]). The whole structure of modules in OpenOpal is based on interfaces. The reason for this is that classes that are used as <code>Modules</code> may be part of a class hierarchy and thus they cannot inherit from a basic module class. There are <code>Modules</code> that can be run, e.g. optimization algorithms. All these modules implement the interface <code>org.openopal.core.modules.IRunnable</code>. Each optimization setup consists of at least two linked <code>Modules</code>: a problem and an optimizer. The interfaces for these modules are <code>org.openopal.core.modules.optimization.IEvaluable</code> and <code>IEvaluator</code>, respecively. The corresponding pair for a learning task is <code>org.openopal.core.modules.learning.IDataSource</code> and <code>IDataSink</code>. Modules can be linked between other modules. E.g. the protocoller is a <code>Module</code> that you can link between an optimizer and a problem. In such a case, all <code>Modules</code> except the optimizer must implement the interface <code>Evaluable</code> and all modules except the problem must implement the interface <code>IEvaluator</code>. This means that the modules form a chain that looks like this (here, two intermediate modules are shown): <pre> [IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable] </pre> where the topmost evaluator is the optimizer and the bottommost evaluable is the optimization problem. The meaning of this picture is that the optimizer produces points and sends them through the chain to the problem. The problem evaluates the points, assigning each point its objective value(s). These are read by the optimizer which then tries to create better points, etc. The same kind of interaction chain is possible for learners and data sources. But there, the information flow is mainly in unidirectional: from the data source to the data sink. The class that represents solutions to optimization problems is <code>Solution</code>. Every instance of this class is a solution to the optimization problem. Each <code>Solution</code> object contains the design variables that define the solution and one or more objective values that assess the quality of the solution. The goal of each optimization algorithm is to find a <code>Solution</code> with minimal objective values. An object of the class <code>Data</code> represents the data involved in a particular learning setup. It is passed from data source to data sink. Often, <code>Modules</code> look similar, and someone writing a new <code>Module</code> doesn't want to implement all interface methods by hand. For these cases, we wrote the abstract classes <code>org.openopal.core.modules.optimization.Optimizer</code> and <code>Problem</code> and <code>learning.Learner</code>. These classes already implement almost all necessary methods. A writer of an optimizer just has to implement the algorithm itself and no other details (e.g. linking, checking etc.). Similarly, a writer of a problem just has to implement the evaluate method of the <code>Problem</code> class. In a learner, the method to override is run(). It executes the learning algorithm. ==Documentation and Contracts== (Almost) each interface, class and method has a JavaDoc comment that defines its documentation. The documentation of methods consists of descriptions of the purpose, the parameters and the return value. We provided many methods with contracts. These are also described on the page https://www.openopal.org/wiki/index.php/Documentation:Contracts. It is important to know these contracts when using (or modifying) methods. Invariants can only be guaranteed if they are established by each constructor and not violated by any method. It should be impossible to access members of an object from outside the object without using a method of the object. That's why members that are part of invariants have to be cloned when they enter or leave the object. ==The Interfaces== ===IModule=== This is the basic interface implemented by all modules. It contains methods for the initialisation and checking of the module and for the management of the options of the module. ===IRunnable=== This interfaces is implemented by all modules that can be run. When a module is run, it executes its optimization algorithm. In the future this could be any kind of algorithm. The interface contains methods to start and stop the execution of the module. ===IEvaluable=== Every module that represents an optimization problem implements the interface IEvaluable. This means that the module can evaluate a given solution. To that end, it looks at the design variables of a solution object it gets from an optimizer and sets the objective value(s) of that object accordingly. If a module is linked before a problem module, it must implement IEvaluable and delegate the evaluation of the solutions to the problem module. Thus, the optmimizer doesn't know if the module right after it is the problem itself or an intermediate module, it just calls the evaluate method of its successor module. IEvaluable contains methods to evaluate one solution or an array of solutions and a method to get the properties of the problem. ===IEvaluator=== A module that can call an evaluable to evaluate solutions implements the interface IEvaluator. Normally, an evaluator is an optimizer module, but any intermediate module between the optimizer and the problem must implement this interface as well. Otherwise, it wouldn't be able to call the problem to evaluate the solutions. IEvaluator contains methods to get and set the references to the evaluables and to check if these links are OK. ===IDataSource=== A module that provides data. This can be a file reader, the protocoller, or other modules that can produce or store data. The getData() method is the most important one. ===IDataSink=== A module implementing this interface represents a learner. It is linked with a data source and processes the given data. Very different kinds of processing are possible. A data viewer can just display the data, a neural network can learn a function from the data or a statistics module can compute some statistics on the data etc. 91 90 2013-03-18T20:56:52Z Dirk 2 /* Documentation and Contracts */ wikitext text/x-wiki ==Basics== The basic element of each OpenOpal optimization or learning environment is still the <code>Module</code>. Each optimization problem, each optimization algorithm and each learning algorithm is a module. A class that is used as a module must implement the interface <code>org.openopal.core.modules.IModule</code> (see [[Documentation/IModule | IModule]]). The whole structure of modules in OpenOpal is based on interfaces. The reason for this is that classes that are used as <code>Modules</code> may be part of a class hierarchy and thus they cannot inherit from a basic module class. There are <code>Modules</code> that can be run, e.g. optimization algorithms. All these modules implement the interface <code>org.openopal.core.modules.IRunnable</code>. Each optimization setup consists of at least two linked <code>Modules</code>: a problem and an optimizer. The interfaces for these modules are <code>org.openopal.core.modules.optimization.IEvaluable</code> and <code>IEvaluator</code>, respecively. The corresponding pair for a learning task is <code>org.openopal.core.modules.learning.IDataSource</code> and <code>IDataSink</code>. Modules can be linked between other modules. E.g. the protocoller is a <code>Module</code> that you can link between an optimizer and a problem. In such a case, all <code>Modules</code> except the optimizer must implement the interface <code>Evaluable</code> and all modules except the problem must implement the interface <code>IEvaluator</code>. This means that the modules form a chain that looks like this (here, two intermediate modules are shown): <pre> [IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable] </pre> where the topmost evaluator is the optimizer and the bottommost evaluable is the optimization problem. The meaning of this picture is that the optimizer produces points and sends them through the chain to the problem. The problem evaluates the points, assigning each point its objective value(s). These are read by the optimizer which then tries to create better points, etc. The same kind of interaction chain is possible for learners and data sources. But there, the information flow is mainly in unidirectional: from the data source to the data sink. The class that represents solutions to optimization problems is <code>Solution</code>. Every instance of this class is a solution to the optimization problem. Each <code>Solution</code> object contains the design variables that define the solution and one or more objective values that assess the quality of the solution. The goal of each optimization algorithm is to find a <code>Solution</code> with minimal objective values. An object of the class <code>Data</code> represents the data involved in a particular learning setup. It is passed from data source to data sink. Often, <code>Modules</code> look similar, and someone writing a new <code>Module</code> doesn't want to implement all interface methods by hand. For these cases, we wrote the abstract classes <code>org.openopal.core.modules.optimization.Optimizer</code> and <code>Problem</code> and <code>learning.Learner</code>. These classes already implement almost all necessary methods. A writer of an optimizer just has to implement the algorithm itself and no other details (e.g. linking, checking etc.). Similarly, a writer of a problem just has to implement the evaluate method of the <code>Problem</code> class. In a learner, the method to override is run(). It executes the learning algorithm. ==The Interfaces== ===IModule=== This is the basic interface implemented by all modules. It contains methods for the initialisation and checking of the module and for the management of the options of the module. ===IRunnable=== This interfaces is implemented by all modules that can be run. When a module is run, it executes its optimization algorithm. In the future this could be any kind of algorithm. The interface contains methods to start and stop the execution of the module. ===IEvaluable=== Every module that represents an optimization problem implements the interface IEvaluable. This means that the module can evaluate a given solution. To that end, it looks at the design variables of a solution object it gets from an optimizer and sets the objective value(s) of that object accordingly. If a module is linked before a problem module, it must implement IEvaluable and delegate the evaluation of the solutions to the problem module. Thus, the optmimizer doesn't know if the module right after it is the problem itself or an intermediate module, it just calls the evaluate method of its successor module. IEvaluable contains methods to evaluate one solution or an array of solutions and a method to get the properties of the problem. ===IEvaluator=== A module that can call an evaluable to evaluate solutions implements the interface IEvaluator. Normally, an evaluator is an optimizer module, but any intermediate module between the optimizer and the problem must implement this interface as well. Otherwise, it wouldn't be able to call the problem to evaluate the solutions. IEvaluator contains methods to get and set the references to the evaluables and to check if these links are OK. ===IDataSource=== A module that provides data. This can be a file reader, the protocoller, or other modules that can produce or store data. The getData() method is the most important one. ===IDataSink=== A module implementing this interface represents a learner. It is linked with a data source and processes the given data. Very different kinds of processing are possible. A data viewer can just display the data, a neural network can learn a function from the data or a statistics module can compute some statistics on the data etc. 92 91 2013-03-18T20:58:00Z Dirk 2 /* Basics */ wikitext text/x-wiki ==Basics== The basic element of each OpenOpal optimization or learning environment is still the <code>Module</code>. Each optimization problem, each optimization algorithm and each learning algorithm is a module. A class that is used as a module must implement the interface <code>org.openopal.core.modules.IModule</code> (see [[Documentation/IModule | IModule]]). The whole structure of modules in OpenOpal is based on interfaces. The reason for this is that classes that are used as <code>Modules</code> may be part of a class hierarchy and thus they cannot inherit from a basic module class. There are <code>Modules</code> that can be run, e.g. optimization algorithms. All these modules implement the interface <code>org.openopal.core.modules.IRunnable</code>. Each optimization setup consists of at least two linked <code>Modules</code>: a problem and an optimizer. The interfaces for these modules are <code>org.openopal.core.modules.optimization.IEvaluable</code> and <code>IEvaluator</code>, respecively. The corresponding pair for a learning task is <code>org.openopal.core.modules.learning.IDataSource</code> and <code>IDataSink</code>. Modules can be linked between other modules. E.g. the protocoller is a <code>Module</code> that you can link between an optimizer and a problem. In such a case, all <code>Modules</code> except the optimizer must implement the interface <code>Evaluable</code> and all modules except the problem must implement the interface <code>IEvaluator</code>. This means that the modules form a chain that looks like this (here, two intermediate modules are shown): <pre> [IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable] </pre> where the topmost evaluator is the optimizer and the bottommost evaluable is the optimization problem. The meaning of this picture is that the optimizer produces points and sends them through the chain to the problem. The problem evaluates the points, assigning each point its objective value(s). These are read by the optimizer which then tries to create better points, etc. The same kind of interaction chain is possible for learners and data sources. But there, the information flow is mainly in unidirectional: from the data source to the data sink. ==The Interfaces== ===IModule=== This is the basic interface implemented by all modules. It contains methods for the initialisation and checking of the module and for the management of the options of the module. ===IRunnable=== This interfaces is implemented by all modules that can be run. When a module is run, it executes its optimization algorithm. In the future this could be any kind of algorithm. The interface contains methods to start and stop the execution of the module. ===IEvaluable=== Every module that represents an optimization problem implements the interface IEvaluable. This means that the module can evaluate a given solution. To that end, it looks at the design variables of a solution object it gets from an optimizer and sets the objective value(s) of that object accordingly. If a module is linked before a problem module, it must implement IEvaluable and delegate the evaluation of the solutions to the problem module. Thus, the optmimizer doesn't know if the module right after it is the problem itself or an intermediate module, it just calls the evaluate method of its successor module. IEvaluable contains methods to evaluate one solution or an array of solutions and a method to get the properties of the problem. ===IEvaluator=== A module that can call an evaluable to evaluate solutions implements the interface IEvaluator. Normally, an evaluator is an optimizer module, but any intermediate module between the optimizer and the problem must implement this interface as well. Otherwise, it wouldn't be able to call the problem to evaluate the solutions. IEvaluator contains methods to get and set the references to the evaluables and to check if these links are OK. ===IDataSource=== A module that provides data. This can be a file reader, the protocoller, or other modules that can produce or store data. The getData() method is the most important one. ===IDataSink=== A module implementing this interface represents a learner. It is linked with a data source and processes the given data. Very different kinds of processing are possible. A data viewer can just display the data, a neural network can learn a function from the data or a statistics module can compute some statistics on the data etc. Documentation/Modules/ClassesModules 0 39 94 2013-03-18T21:07:47Z Dirk 2 Created page with "== Need for Classes == <code>Modules</code> are connected. The information passed between these <code>Modules</code> may be a class of type * <code>Solution</code>s in the cas..." wikitext text/x-wiki == Need for Classes == <code>Modules</code> are connected. The information passed between these <code>Modules</code> may be a class of type * <code>Solution</code>s in the case of an optimization or * <code>Data</code> in the case of learning Often, <code>Modules</code> look similar, and someone writing a new <code>Module</code> doesn't want to implement all interface methods by hand. For these cases, we wrote the abstract classes * <code>Optimizer</code>s in the case of an optimization algorithm * <code>Problem</code>s in the case of an optimization problem * <code>Learner</code>s in the case of a learning algorithm These classes already implement most of the necessary methods. A writer of an '''optimizer''' just has to implement the algorithm itself and no other details such as checking or connecting. Similarly, a writer of a '''problem''' just has to implement the <code>evaluate(...)</code> method of the <code>Problem</code> class. In a '''learner''', the method to override is <code>run()</code> . It executes the learning algorithm. 95 94 2013-03-18T21:08:21Z Dirk 2 /* Need for Classes */ wikitext text/x-wiki == Need for Classes == <code>Modules</code> are connected. The information passed between these <code>Modules</code> may be a class of type * <code>Solution</code>s in the case of an optimization or * <code>Data</code> in the case of learning Often, <code>Modules</code> look similar, and someone writing a new <code>Module</code> doesn't want to implement all interface methods by hand. For these cases, we wrote the abstract classes * <code>Optimizer</code>s in the case of an optimization algorithm * <code>Problem</code>s in the case of an optimization problem * <code>Learner</code>s in the case of a learning algorithm These classes already implement most of the necessary methods. A writer of an '''optimizer''' just has to implement the algorithm itself and no other details such as checking or connecting. Similarly, a writer of a '''problem''' just has to implement the <code>evaluate(...)</code> method of the <code>Problem</code> class. In a '''learner''', the method to override is <code>run()</code> . It executes the learning algorithm. 96 95 2013-03-18T21:08:37Z Dirk 2 wikitext text/x-wiki == Need for Classes == <code>Modules</code> are connected. The information passed between these <code>Modules</code> may be a class of type * <code>Solution</code>s in the case of an optimization or * <code>Data</code> in the case of learning Often, <code>Modules</code> look similar, and someone writing a new <code>Module</code> doesn't want to implement all interface methods by hand. For these cases, we wrote the abstract classes * <code>Optimizer</code>s in the case of an optimization algorithm * <code>Problem</code>s in the case of an optimization problem * <code>Learner</code>s in the case of a learning algorithm These classes already implement most of the necessary methods. A writer of an '''optimizer''' just has to implement the algorithm itself and no other details such as checking or connecting. Similarly, a writer of a '''problem''' just has to implement the <code>evaluate(...)</code> method of the <code>Problem</code> class. In a '''learner''', the method to override is <code>run()</code> . It executes the learning algorithm. Installation 0 40 97 2013-03-18T21:13:01Z Dirk 2 Created page with "The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single ja..." wikitext text/x-wiki The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>openopal.jar</tt>. After downloading, start OpenOpal with either: * double clicking on the jar (this is simple, however, not activated on all plattforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>openopal.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar openopal.jar </pre> <pre>$ java -classpath openopal.jar org.openopal.core.OpenOpal</pre> * to see additional command line options enter <pre>$ java -jar openopal.jar -help </pre> 98 97 2013-03-18T21:27:41Z Dirk 2 wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>openopal.jar</tt>. == Start == Start OpenOpal with either: * double clicking on the jar (this is simple, however, not activated on all plattforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>openopal.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar openopal.jar </pre> <pre>$ java -classpath openopal.jar org.openopal.core.OpenOpal</pre> * to see additional command line options enter <pre>$ java -jar openopal.jar -help </pre> == Writing a Shell Script == The script assumes an OpenOpal archive file <tt>openopal.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. In Windows, create a file <tt>openopal.bat</tt> with the following content: <pre>$java -cp openopal.jar org/openopal/core/OpenOpal %* /pre> In Linux, create a file <tt>openopal.sh</tt> with the following content: <pre> #!/bin/sh java -classpath openopal.jar org.openopal.core.OpenOpal $* /pre> To make the file executable enter in the shell: <pre> chmod u+x openopal.sh /pre> 99 98 2013-03-18T21:38:48Z Dirk 2 /* Writing a Shell Script */ wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>openopal.jar</tt>. == Start == Start OpenOpal with either: * double clicking on the jar (this is simple, however, not activated on all plattforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>openopal.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar openopal.jar </pre> <pre>$ java -classpath openopal.jar org.openopal.core.OpenOpal</pre> * to see additional command line options enter <pre>$ java -jar openopal.jar -help </pre> == Writing a Shell Script == The script assumes an OpenOpal archive file <tt>openopal.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. In Windows, create a file <tt>openopal.bat</tt> with the following content: java -cp openopal.jar org/openopal/core/OpenOpal %* In Linux, create a file <tt>openopal.sh</tt> with the following content: #!/bin/sh java -classpath openopal.jar org.openopal.core.OpenOpal $* To make the file executable enter in the shell: chmod u+x openopal.sh Documentation/Modules 0 11 100 11 2013-03-18T21:46:36Z Dirk 2 /* Optimization Problems */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenOpal. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Not implemented, yet. === Direct, Deterministic Algorithms === * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>: Elitist Evolution Strategy with Covariance Matrix Adaptation]] * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>: Particle Swarm Optimization Algorithm]] == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms Without Bound Handling]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] 101 100 2013-03-18T21:46:46Z Dirk 2 /* Optimization in General */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenOpal. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Not implemented, yet. === Direct, Deterministic Algorithms === * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>: Elitist Evolution Strategy with Covariance Matrix Adaptation]] * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>: Particle Swarm Optimization Algorithm]] == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms Without Bound Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] Documentation/Modules/BoundHandler 0 41 102 2013-03-18T21:48:07Z Dirk 2 Created page with "==Summary== Some optimizations require bounds on the design variables '''xxx'''. E.g. for the diameter of any mechanical support must be above a certain minimum value. As not a..." wikitext text/x-wiki ==Summary== Some optimizations require bounds on the design variables '''xxx'''. E.g. for the diameter of any mechanical support must be above a certain minimum value. As not all optimization algorithms include bound handling, the module <code>BoundHandler</code> was created. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic. |- ! Design Variables | Continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number. |- ! Constraints | any number. |- ! Boundaries | Design variables values outside the boundaries are corrected. |- ! Initial Search Region | not affected. |- ! Typical X | not affected. |- ! Initialization | not required. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== Any optimization algorithm proposes a new solution '''x'''. Some of the values of '''x''' might be outside the lower bounds x<sub>l</sub> and upper bounds x<sub>u</sub>, specified in the "Problem" module. These variables are corrected to values within the bounds by two different methods: 1. set to bounds If one of the variables x is below or above the bounds, it is set to the bound value, i.e. if x < x<sub>l</sub>, then x = x<sub>l</sub> else if x > x<sub>u</sub>, then x = x<sub>u</sub> 2. reflect If one of the variables x is below or above the bounds, it is reflected from the bound. The reflection is done such that if x goes to infinity, x is equal to the lower bound and if x goes to minus infinity, it is set to the upper bound. if x < x<sub>l</sub>, then x = x<sub>u</sub> + (x<sub>l</sub>- x<sub>u</sub>) / (x - x<sub>u</sub>) * (x<sub>l</sub>- x<sub>u</sub>); else if x > x<sub>u</sub>, then x = x<sub>l</sub> + (x<sub>u</sub>- x<sub>l</sub>) / (x - x<sub>l</sub>) * (x<sub>u</sub>- x<sub>l</sub>) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - Benutzer:Dirk 2 42 104 2013-06-05T19:08:58Z Dirk 2 Created page with "this page is private" wikitext text/x-wiki this page is private 105 104 2013-06-05T19:10:44Z Dirk 2 wikitext text/x-wiki Dirk Bueche MediaWiki:Sidebar 8 30 106 59 2013-06-05T19:32:58Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** download| Download ** screenshots|Screen Shots ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES 107 106 2013-06-05T19:40:05Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** Documentations|documentation ** Download|download ** screenshots|Screen Shots ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES 108 107 2013-06-05T19:41:01Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation-description ** download|Download ** screenshots|Screen Shots ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES 109 108 2013-06-05T19:41:39Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** download|DownloadX ** screenshots|Screen Shots ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES MediaWiki:Sidebar 8 30 110 109 2013-06-05T19:41:56Z Admin 1 wikitext text/x-wiki * SEARCH * navigation ** mainpage|mainpage-description ** documentation|Documentation ** download|Downloads ** screenshots|Screen Shots ** recentchanges-url|recentchanges ** randompage-url|randompage * TOOLBOX * LANGUAGES 111 110 2013-06-05T20:18:50Z Admin 1 wikitext text/x-wiki * SEARCH * Navigation ** mainpage|mainpage-description ** documentation|Documentation ** download|Downloads ** screenshots|Screen Shots * TOOLBOX ** recentchanges-url|recentchanges ** randompage-url|randompage * LANGUAGES 112 111 2013-06-05T20:19:29Z Admin 1 wikitext text/x-wiki * SEARCH * Navigation ** mainpage|mainpage-description ** documentation|Documentation ** download|Downloads ** screenshots|Screen Shots * TOOLBOX * Other Pages ** recentchanges-url|recentchanges ** randompage-url|randompage * LANGUAGES Main Page 0 2 113 60 2013-09-12T20:04:54Z Admin 1 wikitext text/x-wiki = Welcome to '''OpenDINO''' = '''OpenDINO ''' is an open source platform for optimization, design of experiment and learning. The code bases on [OpenOpal], a project created in a cooperation of two universities which has been terminated. OpenOpal is written in Java. Contact: * [mailto:help@opendino.org help@opendino.org] 114 113 2013-09-12T20:10:05Z Admin 1 wikitext text/x-wiki = Welcome to '''OpenDINO''' = '''OpenDINO ''' is an open source platform for optimization, design of experiment and learning. The code bases on [http://www.openopal.org OpenOpal], a project created in a cooperation of two universities which has been terminated. OpenOpal is written in Java. Contact: * [mailto:help@opendino.org help@opendino.org] 129 114 2013-09-27T18:38:14Z Dirk 2 /* Welcome to OpenDINO */ wikitext text/x-wiki = Welcome to '''OpenDINO''' = '''OpenDINO ''' is an open source platform for optimization, design of experiment and learning. The platform is a successor of the terminated [http://www.openopal.org OpenOpal] project. '''OpenDINO''' is written in Java. Contact: * [mailto:help@opendino.org help@opendino.org] 138 129 2014-03-18T22:11:35Z Dirk 2 /* Welcome to OpenDINO */ wikitext text/x-wiki = Welcome to '''OpenDino''' = '''OpenDino ''' is an open source platform for optimization, design of experiment and learning. The platform is a successor of the terminated [http://www.openopal.org OpenOpal] project. '''OpenDino''' is written in Java. Contact: * [mailto:help@opendino.org help@opendino.org] Screenshots 0 3 115 3 2013-09-12T20:11:33Z Admin 1 wikitext text/x-wiki == The Main Window == After starting software, the main '''GUI''' appears (Fig. 1). The figure contains an example for an optimization using 4 '''Module'''s. Each module has a name and an unique ID. OpenOpal is a strictly modular software. All functionality for automated optimization and machine learning is encoded in the modules. Here: Module 1 (<code>OptAlgCMA</code>) is an optimization algorithm. It is connected via Module 3 (<code>Protocoller</code>) with Module 2 (<code>ProblemSimple</code>). Module 2 contains the optimization problem, i.e. the function to minimize. Here, it is a simple continuous, quadratic function. Module 3 (<code>Protocoller</code>) is a protocoling module, i.e. it stores all evaluated solutions of an optimization run. These solutions can be visualized with Module 4 (<code>DataViewer</code>). [[Image:OpenOpalMainGUI.png|frame|center|Figure 1: Main GUI of OpenOpal]] == Adding, Editing, and Connecting Modules == Right-clicking on the dotted area or on a module opens a dialogue as shown in Fig. 2. This dialogue supports: * adding modules (if clicked on a free space) * removing modules or changing the options of a module when clicking on a module * adding/removing connections between modules * checking and running modules In Fig. 2, the right-click is made on Module 4, e.g. for setting the options of this module. [[Image:OpenOpalModuleRightclick.png|frame|center|Figure 2: Editing Modules]] == Running an Optimization == Right-clicking Module 1 and selecting the option <code>Run</code> starts an optimization. The standard output of the optimization is given in the lower part of the main window in Fig. 3. [[Image:OpenOpalOptimization.png|frame|center|Figure 3: Running an Optimization]] == Postprocessing an Optimization == Right-clicking Module 4 and selecting the option <code>Run</code> starts an the data viewer. Figure 4 shows the evolution of the objective function ''f'' over the number of evaluations. As the objective function is a simple quadratic function (x^2), the minimal function value is zero, which is approximated by 1e-12. [[Image:OpenOpalDataViewer.png|frame|center|Figure 4: Postprocessing an Optimization with the DataViewer module. ]] == References == Input file behind screen shots is stored in the SVN repository ToDo: Link. 116 115 2013-09-12T20:12:42Z Admin 1 wikitext text/x-wiki == The Main Window == After starting software, the main '''GUI''' appears (Fig. 1). The figure contains an example for an optimization using 4 '''Module'''s. Each module has a name and an unique ID. The software is a strictly modular. All functionality for automated optimization and machine learning is encoded in the modules. Here: Module 1 (<code>OptAlgCMA</code>) is an optimization algorithm. It is connected via Module 3 (<code>Protocoller</code>) with Module 2 (<code>ProblemSimple</code>). Module 2 contains the optimization problem, i.e. the function to minimize. Here, it is a simple continuous, quadratic function. Module 3 (<code>Protocoller</code>) is a protocoling module, i.e. it stores all evaluated solutions of an optimization run. These solutions can be visualized with Module 4 (<code>DataViewer</code>). [[Image:OpenOpalMainGUI.png|frame|center|Figure 1: Main GUI of OpenDINO]] == Adding, Editing, and Connecting Modules == Right-clicking on the dotted area or on a module opens a dialogue as shown in Fig. 2. This dialogue supports: * adding modules (if clicked on a free space) * removing modules or changing the options of a module when clicking on a module * adding/removing connections between modules * checking and running modules In Fig. 2, the right-click is made on Module 4, e.g. for setting the options of this module. [[Image:OpenOpalModuleRightclick.png|frame|center|Figure 2: Editing Modules]] == Running an Optimization == Right-clicking Module 1 and selecting the option <code>Run</code> starts an optimization. The standard output of the optimization is given in the lower part of the main window in Fig. 3. [[Image:OpenOpalOptimization.png|frame|center|Figure 3: Running an Optimization]] == Postprocessing an Optimization == Right-clicking Module 4 and selecting the option <code>Run</code> starts an the data viewer. Figure 4 shows the evolution of the objective function ''f'' over the number of evaluations. As the objective function is a simple quadratic function (x^2), the minimal function value is zero, which is approximated by 1e-12. [[Image:OpenOpalDataViewer.png|frame|center|Figure 4: Postprocessing an Optimization with the DataViewer module. ]] == References == Input file behind screen shots is stored in the SVN repository ToDo: Link. 131 116 2014-03-18T20:04:23Z Dirk 2 wikitext text/x-wiki == The Main Window == After starting software, the main '''GUI''' appears (Fig. 1). The figure contains an example for an optimization using 4 '''Module'''s. Each module has a name and an unique ID. The software is a strictly modular. All functionality for automated optimization and machine learning is encoded in the modules. Here: Module 1 (<code>OptAlgCMA</code>) is an optimization algorithm. It is connected via Module 3 (<code>Protocoller</code>) with Module 2 (<code>ProblemSimple</code>). Module 2 contains the optimization problem, i.e. the function to minimize. Here, it is a simple continuous, quadratic function. Module 3 (<code>Protocoller</code>) is a protocoling module, i.e. it stores all evaluated solutions of an optimization run. These solutions can be visualized with Module 4 (<code>DataViewer</code>). [[Image:MainGUI.png|frame|center|Figure 1: Main GUI of OpenDINO]] == Adding, Editing, and Connecting Modules == Right-clicking on the dotted area or on a module opens a dialogue as shown in Fig. 2. This dialogue supports: * adding modules (if clicked on a free space) * removing modules or changing the options of a module when clicking on a module * adding/removing connections between modules * checking and running modules In Fig. 2, the right-click is made on Module 4, e.g. for setting the options of this module. [[Image:ModuleRightclick.png|frame|center|Figure 2: Editing Modules]] == Running an Optimization == Right-clicking Module 1 and selecting the option <code>Run</code> starts an optimization. The standard output of the optimization is given in the lower part of the main window in Fig. 3. [[Image:Optimization.png|frame|center|Figure 3: Running an Optimization]] == Postprocessing an Optimization == Right-clicking Module 4 and selecting the option <code>Run</code> starts an the data viewer. Figure 4 shows the evolution of the objective function ''f'' over the number of evaluations. As the objective function is a simple quadratic function (x^2), the minimal function value is zero, which is approximated by 1e-12. [[Image:DataViewer.png|frame|center|Figure 4: Postprocessing an Optimization with the DataViewer module. ]] == References == Input file behind screen shots is stored in the SVN repository ToDo: Link. 149 131 2014-03-19T22:04:15Z Admin 1 wikitext text/x-wiki == The Main Window == After starting software, the main '''GUI''' appears (Fig. 1). The figure contains an example for an optimization using 4 '''Module'''s. Each module has a name and an unique ID. The software is a strictly modular. All functionality for automated optimization and machine learning is encoded in the modules. Here: Module 1 (<code>OptAlgCMA</code>) is an optimization algorithm. It is connected via Module 3 (<code>Protocoller</code>) with Module 2 (<code>ProblemSimple</code>). Module 2 contains the optimization problem, i.e. the function to minimize. Here, it is a simple continuous, quadratic function. Module 3 (<code>Protocoller</code>) is a protocoling module, i.e. it stores all evaluated solutions of an optimization run. These solutions can be visualized with Module 4 (<code>DataViewer</code>). [[Image:MainGUI.png|frame|center|Figure 1: Main GUI of OpenDino]] == Adding, Editing, and Connecting Modules == Right-clicking on the dotted area or on a module opens a dialogue as shown in Fig. 2. This dialogue supports: * adding modules (if clicked on a free space) * removing modules or changing the options of a module when clicking on a module * adding/removing connections between modules * checking and running modules In Fig. 2, the right-click is made on Module 4, e.g. for setting the options of this module. [[Image:ModuleRightclick.png|frame|center|Figure 2: Editing Modules]] == Running an Optimization == Right-clicking Module 1 and selecting the option <code>Run</code> starts an optimization. The standard output of the optimization is given in the lower part of the main window in Fig. 3. [[Image:Optimization.png|frame|center|Figure 3: Running an Optimization]] == Postprocessing an Optimization == Right-clicking Module 4 and selecting the option <code>Run</code> starts an the data viewer. Figure 4 shows the evolution of the objective function ''f'' over the number of evaluations. As the objective function is a simple quadratic function (x^2), the minimal function value is zero, which is approximated by 1e-12. [[Image:DataViewer.png|frame|center|Figure 4: Postprocessing an Optimization with the DataViewer module. ]] == References == Input file behind screen shots is stored in the SVN repository ToDo: Link. Documentation/Modules 0 11 117 101 2013-09-12T20:13:39Z Admin 1 wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDINO. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Not implemented, yet. === Direct, Deterministic Algorithms === * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>: Elitist Evolution Strategy with Covariance Matrix Adaptation]] * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>: Particle Swarm Optimization Algorithm]] == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms Without Bound Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] 151 117 2014-03-19T22:05:23Z Admin 1 wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Not implemented, yet. === Direct, Deterministic Algorithms === * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>: Elitist Evolution Strategy with Covariance Matrix Adaptation]] * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>: Particle Swarm Optimization Algorithm]] == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms Without Bound Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] Documentation 0 10 118 93 2013-09-12T20:14:26Z Admin 1 wikitext text/x-wiki == Download == * [[Download | Executable]] * [[Documentation/Download/SVN | Source Code]] * [[Documentation/Software/Requirements | Software Requirements]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Users' Guide == * [[screenshots | A First Introduction to OpenDINO in the Screenshots]] * [[Installation | Installation]] * [[Documentation/Modules | Module Documentation]] == Developers' Guide == * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenDINO ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] 139 118 2014-03-19T20:03:51Z Dirk 2 wikitext text/x-wiki == Requirements == * [[Documentation/Software/Requirements | Software Requirements]] == Users' Guide == * [[Installation | Installation]] * [[Screenshots | A First Introduction to OpenDINO in the Screenshots]] * [[Documentation/Modules | Module Documentation]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Developers' Guide == * [[Download | Download]] * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenDINO ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] 150 139 2014-03-19T22:04:54Z Admin 1 wikitext text/x-wiki == Requirements == * [[Documentation/Software/Requirements | Software Requirements]] == Users' Guide == * [[Installation | Installation]] * [[Screenshots | A First Introduction to OpenDino in the Screenshots]] * [[Documentation/Modules | Module Documentation]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] * [[Documentation/Notation | Symbols and Notation]] == Developers' Guide == * [[Download | Download]] * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenDino ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] 159 150 2015-10-21T18:51:26Z Dirk 2 wikitext text/x-wiki == Requirements == * [[Documentation/Software/Requirements | Software Requirements]] == Users' Guide == * [[Installation | Installation]] * [[Screenshots | A First Introduction to OpenDino in the Screenshots]] * [[Documentation/Notation | Symbols and Notation]] * [[Documentation/Modules | Module Documentation]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] == Developers' Guide == * [[Download | Download]] * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenDino ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/Execution | Module Execution]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] Documentation/DoE 0 20 119 24 2013-09-12T20:15:11Z Admin 1 wikitext text/x-wiki =Design of Experiments= == Introduction == Design of Experiments ('''DoE''') defines methods of how to plan and arrange experiments. We explain the method using the example of a baker in a bakery. The baker wants to analyze the effect of different settings of his oven to the quality of the resulting bread by conducting several experiments. === Target Values === We define the targets of experiments (here to improve the quality of the bread) as '''target values'''. === Input Parameters === All sources of influence on the target values are referred to as '''factors'''. Three different groups of factors are distinguished: # ''noise factors'': These factors cannot be controlled or controlling these factors is too expensive. As an example, the temperature and humidity in the bakery depends on the season and weather and cannot be controlled. # ''control factors'': These factors can be controlled. However, their influence on the target value is not of interest and thus, these factors are set constant. For example, the baker wants to leave his recipe for the bread unchanged. # ''signal factors'': These factors can be controlled. Their influence is of interest and their values are modified in the experiments. DoE is important when we have to analyze a process with multiple signal factors, in order to determine their effect on the target value(s). '''''Note:''' In the following, we will only consider signal factors. For simplicity, they are referred to as factors.'' === Factor Levels === For each factor, we may want to analyze different values. For example, we want to analyze an oven temperature of 185, 190, 195, and 200<sup>o</sup>C and a baking time of 45, 50, 55 and 60 minutes. These different values are referred to as ''factor levels''. === Experiment === One experiment is one combination of different factor levels and the corresponding target values for the experiment. For example, one experiment may be a temperature of 190<sup>o</sup>C and a baking time of 60 min. One experiment is also referred to as one '''factor level combination'''. === DoE Plan === The DoE plan defines which experiments are to be conducted and in which sequence they are conducted. The sequence may be important as environmental conditions like temperature may effect the target values as well as hysteresis effects. DoE plans differ in number of total experiments and the order of the experiments. The number of experiments strongly influences the information gain and the trust in the experiments. As references for DoE plans we recommend [ [[#klepp | 1]], [[#wikidoe | 2]] ]. == DoE Plans == A DoE plan can be considered as a set of rules describing how to choose factors, the number of factor levels, factor level values or value distributions, etc.. In the following, two different DoE plans are outlined. === Full Factorial === [[Image:DoEFullFactorial.png|frame|right|A two factor Full Factorial plan. Each square represents one possible experiment. The "X" denote the actual experiments that will be scheduled.]] For given numbers of factor levels for each variable, a limited number of different experiments can be conducted. A DoE plan with all possible experiments is referred to as '''Full Factorial''' plan: The number of factor levels may vary for the factors. All other plans use only a subset of all possible experiments. === Latin Hypercube === [[Image:DoELatinHypercube.png|frame|right|A two factor Latin Hypercube plan. Each square represents one possible experiment. The "X" denote the actual experiments that will be scheduled.]] Compared to the Full Factorial plan, the Latin Hypercube (LHC) sampling dramatically reduces the number of experiments (see e.g. [ [[#wikilhc | 3]] ]). So it is most useful for expensive experiments, whether they be money or time intensive. Latin Hypercube requires the same number of factor levels for all factors. The number of experiments of a LHC plan is equal to the number of factor levels and is independent on the number of factors. This makes it very scalable (O(1)) in respect of number of factors. The philosophy of LHC is to use every factor level exactly once. The figure on the right demonstrates a possible plan for 4 factor levels. As each factor level is only used once, each row and column in the figure must contain exactly one cross. Thus, LHC guaranties that for each factor, the entire range of factor levels is used. == Common Settings for all DoE Plans == The following list explains common settings for all DoE plans. === Number of Iterations === The testing of a set of experiments that a DoE plan proposes is referred to as one ''iteration''. If we would schedule three ''iterations'', each experiment (i.e. a certain factor level combination) in the set is tested exactly three times. Using more than one iteration is only necessary if the system to analyze is noisy (i.e. the target values are noisy), may contain a drift while testing, or produces hysteresis. === Random Scheduling === [[Image:DoERandomBlock.png|thumb|250px|right|Four different scheduling plans of six experiments resulting from DoE plan with three experiments and two iterations. The small double-bordered boxes outline the blocks.]] Without ''random scheduling'', the experiments are tested in a fixed order. With ''randomization'' activated, a random sequence for the experiment is set up. To what extend the randomization occurs depends on whether ''block building'' is active or not. ''Random scheduling'' may help to analyze effects like hysteresis, i.e. the previous experiment effects the outcome of the current experiment. If we run multiple iterations, the effect of hysteresis decreases because of statistical reasons. === Block Building === If ''block building'' is activated, all experiments of one iteration are tested. Then, all experiments of the next iteration are tested. If ''block building'' is '''de'''activated, experiments of different iterations may follow each other. ''Block building'', like ''random scheduling'', may reduce the effect that may occur because of the order in which the experiments get scheduled. While ''random scheduling'' may reduce the effect of subsequent experiments, activating ''block building'' may reduce the effect caused by external (long term) influences. These influences can be quality of the used materials, which may vary over time or depend on the supplier, human interaction with the machines or the accuracy of machines of the same type used for the experiments. == DoE in OpenDINO == A description for DoE in OpenDINO can be found in the module documentation (see [[Documentation/Modules/DoePlanner]]). == References == <span id="klepp">1</span> Wilhelm Kleppmann, Taschenbuch Versuchsplanung (4. Auflage) - Produkte und Prozesse optimieren, Carl Hanser Verlag Muenchen Wien, 2006 <span id="wikidoe">2</span> http://en.wikipedia.org/wiki/Design_of_experiments <span id="wikilhc">3</span> http://en.wikipedia.org/wiki/Latin_hypercube 158 119 2014-03-19T22:09:52Z Admin 1 wikitext text/x-wiki =Design of Experiments= == Introduction == Design of Experiments ('''DoE''') defines methods of how to plan and arrange experiments. We explain the method using the example of a baker in a bakery. The baker wants to analyze the effect of different settings of his oven to the quality of the resulting bread by conducting several experiments. === Target Values === We define the targets of experiments (here to improve the quality of the bread) as '''target values'''. === Input Parameters === All sources of influence on the target values are referred to as '''factors'''. Three different groups of factors are distinguished: # ''noise factors'': These factors cannot be controlled or controlling these factors is too expensive. As an example, the temperature and humidity in the bakery depends on the season and weather and cannot be controlled. # ''control factors'': These factors can be controlled. However, their influence on the target value is not of interest and thus, these factors are set constant. For example, the baker wants to leave his recipe for the bread unchanged. # ''signal factors'': These factors can be controlled. Their influence is of interest and their values are modified in the experiments. DoE is important when we have to analyze a process with multiple signal factors, in order to determine their effect on the target value(s). '''''Note:''' In the following, we will only consider signal factors. For simplicity, they are referred to as factors.'' === Factor Levels === For each factor, we may want to analyze different values. For example, we want to analyze an oven temperature of 185, 190, 195, and 200<sup>o</sup>C and a baking time of 45, 50, 55 and 60 minutes. These different values are referred to as ''factor levels''. === Experiment === One experiment is one combination of different factor levels and the corresponding target values for the experiment. For example, one experiment may be a temperature of 190<sup>o</sup>C and a baking time of 60 min. One experiment is also referred to as one '''factor level combination'''. === DoE Plan === The DoE plan defines which experiments are to be conducted and in which sequence they are conducted. The sequence may be important as environmental conditions like temperature may effect the target values as well as hysteresis effects. DoE plans differ in number of total experiments and the order of the experiments. The number of experiments strongly influences the information gain and the trust in the experiments. As references for DoE plans we recommend [ [[#klepp | 1]], [[#wikidoe | 2]] ]. == DoE Plans == A DoE plan can be considered as a set of rules describing how to choose factors, the number of factor levels, factor level values or value distributions, etc.. In the following, two different DoE plans are outlined. === Full Factorial === [[Image:DoEFullFactorial.png|frame|right|A two factor Full Factorial plan. Each square represents one possible experiment. The "X" denote the actual experiments that will be scheduled.]] For given numbers of factor levels for each variable, a limited number of different experiments can be conducted. A DoE plan with all possible experiments is referred to as '''Full Factorial''' plan: The number of factor levels may vary for the factors. All other plans use only a subset of all possible experiments. === Latin Hypercube === [[Image:DoELatinHypercube.png|frame|right|A two factor Latin Hypercube plan. Each square represents one possible experiment. The "X" denote the actual experiments that will be scheduled.]] Compared to the Full Factorial plan, the Latin Hypercube (LHC) sampling dramatically reduces the number of experiments (see e.g. [ [[#wikilhc | 3]] ]). So it is most useful for expensive experiments, whether they be money or time intensive. Latin Hypercube requires the same number of factor levels for all factors. The number of experiments of a LHC plan is equal to the number of factor levels and is independent on the number of factors. This makes it very scalable (O(1)) in respect of number of factors. The philosophy of LHC is to use every factor level exactly once. The figure on the right demonstrates a possible plan for 4 factor levels. As each factor level is only used once, each row and column in the figure must contain exactly one cross. Thus, LHC guaranties that for each factor, the entire range of factor levels is used. == Common Settings for all DoE Plans == The following list explains common settings for all DoE plans. === Number of Iterations === The testing of a set of experiments that a DoE plan proposes is referred to as one ''iteration''. If we would schedule three ''iterations'', each experiment (i.e. a certain factor level combination) in the set is tested exactly three times. Using more than one iteration is only necessary if the system to analyze is noisy (i.e. the target values are noisy), may contain a drift while testing, or produces hysteresis. === Random Scheduling === [[Image:DoERandomBlock.png|thumb|250px|right|Four different scheduling plans of six experiments resulting from DoE plan with three experiments and two iterations. The small double-bordered boxes outline the blocks.]] Without ''random scheduling'', the experiments are tested in a fixed order. With ''randomization'' activated, a random sequence for the experiment is set up. To what extend the randomization occurs depends on whether ''block building'' is active or not. ''Random scheduling'' may help to analyze effects like hysteresis, i.e. the previous experiment effects the outcome of the current experiment. If we run multiple iterations, the effect of hysteresis decreases because of statistical reasons. === Block Building === If ''block building'' is activated, all experiments of one iteration are tested. Then, all experiments of the next iteration are tested. If ''block building'' is '''de'''activated, experiments of different iterations may follow each other. ''Block building'', like ''random scheduling'', may reduce the effect that may occur because of the order in which the experiments get scheduled. While ''random scheduling'' may reduce the effect of subsequent experiments, activating ''block building'' may reduce the effect caused by external (long term) influences. These influences can be quality of the used materials, which may vary over time or depend on the supplier, human interaction with the machines or the accuracy of machines of the same type used for the experiments. == DoE in OpenDino == A description for DoE in OpenDino can be found in the module documentation (see [[Documentation/Modules/DoePlanner]]). == References == <span id="klepp">1</span> Wilhelm Kleppmann, Taschenbuch Versuchsplanung (4. Auflage) - Produkte und Prozesse optimieren, Carl Hanser Verlag Muenchen Wien, 2006 <span id="wikidoe">2</span> http://en.wikipedia.org/wiki/Design_of_experiments <span id="wikilhc">3</span> http://en.wikipedia.org/wiki/Latin_hypercube Download 0 47 120 57 2013-09-12T20:15:44Z Admin 1 wikitext text/x-wiki == Download Software == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . == Download Source Code == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . The software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be downloaded. Download the software with shell command: <pre> $ svn checkout {ToDo:Link to SVN}</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or an appropriate plug-in for your IDE. 130 120 2013-09-27T19:49:12Z Dirk 2 /* Download Source Code */ wikitext text/x-wiki == Download Software == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . == Download Source Code == Source code is located at https://sourceforge.net/p/opendino/code The software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be downloaded. Download the software with shell command: <pre> $ svn checkout svn://svn.code.sf.net/p/opendino/code/trunk</pre> Downloading requires a [http://subversion.tigris.org/ subversion client] or an appropriate plug-in for your IDE. 140 130 2014-03-19T20:12:31Z Admin 1 /* Download Source Code */ wikitext text/x-wiki == Download Software == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . == Download Source Code == Source code is located at https://sourceforge.net/p/opendino/code The software is version controlled using a Subversion (SVN) repository. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.tigris.org/ subversion homepage]) and should not be downloaded. Download the software with shell command: <pre> $ svn checkout svn://svn.code.sf.net/p/opendino/code/trunk</pre> Downloading requires a [http://subversion.apache.org/ subversion client] or an appropriate plug-in for your IDE. 141 140 2014-03-19T20:17:55Z Admin 1 /* Download Source Code */ wikitext text/x-wiki == Download Software == . '''!!!!!!!!!!!!!!!!!!!!!!!''' '''CURRENTLY NOT AVAILABLE''' '''!!!!!!!!!!!!!!!!!!!!!!!''' . == Download Source Code == Source code is located at https://sourceforge.net/p/opendino/code The software is version controlled using a Subversion (SVN) repository. Download the software with shell command: <pre> $ svn checkout svn://svn.code.sf.net/p/opendino/code/ opendino-code</pre> In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.apache.org/ subversion homepage]) and should not be downloaded. Downloading requires a [http://subversion.apache.org/ subversion client] or an appropriate plug-in for your IDE. 142 141 2014-03-19T21:42:17Z Admin 1 /* Download Software */ wikitext text/x-wiki == Download Software == The executable jar file with source code is given in the file 19.3.2014 [[Media:opendino_0.1.jar | opendino_0.1.jar]] == Download Source Code == Source code is located at https://sourceforge.net/p/opendino/code The software is version controlled using a Subversion (SVN) repository. Download the software with shell command: <pre> $ svn checkout svn://svn.code.sf.net/p/opendino/code/ opendino-code</pre> In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.apache.org/ subversion homepage]) and should not be downloaded. Downloading requires a [http://subversion.apache.org/ subversion client] or an appropriate plug-in for your IDE. 143 142 2014-03-19T21:42:56Z Admin 1 /* Download Software */ wikitext text/x-wiki == Download Software == The executable jar file with source code is given in the file || Date || File || || 19.3.2014 || [[Media:opendino_0.1.jar | opendino_0.1.jar]] || == Download Source Code == Source code is located at https://sourceforge.net/p/opendino/code The software is version controlled using a Subversion (SVN) repository. Download the software with shell command: <pre> $ svn checkout svn://svn.code.sf.net/p/opendino/code/ opendino-code</pre> In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.apache.org/ subversion homepage]) and should not be downloaded. Downloading requires a [http://subversion.apache.org/ subversion client] or an appropriate plug-in for your IDE. 144 143 2014-03-19T21:46:30Z Admin 1 /* Download Software */ wikitext text/x-wiki == Download Software == The executable jar file with source code is given in the file {| border="1" cellpadding="10" cellspacing="0" !Date !File |- | 19.3.2014 | [[Media:opendino_0.1.jar | opendino_0.1.jar]] |} == Download Source Code == Source code is located at https://sourceforge.net/p/opendino/code The software is version controlled using a Subversion (SVN) repository. Download the software with shell command: <pre> $ svn checkout svn://svn.code.sf.net/p/opendino/code/ opendino-code</pre> In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.apache.org/ subversion homepage]) and should not be downloaded. Downloading requires a [http://subversion.apache.org/ subversion client] or an appropriate plug-in for your IDE. 145 144 2014-03-19T21:48:55Z Admin 1 /* Download Source Code */ wikitext text/x-wiki == Download Software == The executable jar file with source code is given in the file {| border="1" cellpadding="10" cellspacing="0" !Date !File |- | 19.3.2014 | [[Media:opendino_0.1.jar | opendino_0.1.jar]] |} == Download Source Code == The software is version controlled using a Subversion (SVN) repository. Source code is located at https://sourceforge.net/p/opendino/code The URL specifies also the download command. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.apache.org/ subversion homepage]) and should not be downloaded. Downloading requires a [http://subversion.apache.org/ subversion client] or an appropriate plug-in for your IDE. Documentation/Optimization 0 25 121 31 2013-09-12T20:16:44Z Admin 1 wikitext text/x-wiki =Optimization= == Introduction == Optimization searches for the best solution '''x'''* to a problem and can be defined as '''x'''* = argmin (''f''('''x''')) where ''f'' is the function to be optimized (the objective function) and '''x''' are the design variables for which optimal settings have to be found. This definition can be extended to multiple objectives '''f''' and by constraints. == Some Important Expressions == === Manual vs. Automated Optimization === Optimization is an everyday task. For example, searching the fastest way to work or home is an optimization problem. We speak about ''automated'' optimization, if a computer algorithm solves the problem in an automated fashion, i.e. without user interaction. === Objective Function === Optimization typically searches for the optimal solution to a problem. For automated optimization, the problem must be encoded in a mathematical function ''f'', which has to be either minimized or maximized. In OpenDINO, only minimization is considered as maximization can be expressed as: max(f) = - min(-f) === Design Variables === The optimal solution is searched by modifying the design variables '''x'''. The objective function depends on the design variables: f = f('''x'''). === Multiple Objectives === If multiple objectives '''f''' should be optimized, then a multi-objective optimization problem has to be solved. Some optimization algorithms search concurrently for multiple compromise solutions for the objectives (Pareto optimization) or a single compromise solution, defined as a weighed sum of all objectives. === Constraints === While the optimization algorithm tries to minimize all objectives, constraints simply have to be fulfilled. For example, the maximal stress in a truss should not exceed a certain limit. If the stress is below the limit, no advantage is gained. If the stress is above the limit, the solution is typically constrained by a penalty value, which increases with increasing constraint violation. === Direct vs. Indirect Search === In OpenDINO, we implement optimization algorithms that search a problem in an iterative fashion, i.e. by computing several different solutions to the problem. The best solution is returned. This iterative search can be either direct or indirect: '''Direct''' search uses only direct information (i.e. the objective and constraint value(s). '''Indirect''' algorithms use indirect information (i.e. gradient and/or higher order derivative information of the objective(s) and constraint(s)). === Stochastic vs. Deterministic Algorithms === While '''stochastic''' algorithms such as Evolutionary Algorithms and Particle Swarm use random values in their search method, '''deterministic''' algorithms like the Simplex Method or gradient based search do not. 157 121 2014-03-19T22:09:15Z Admin 1 wikitext text/x-wiki =Optimization= == Introduction == Optimization searches for the best solution '''x'''* to a problem and can be defined as '''x'''* = argmin (''f''('''x''')) where ''f'' is the function to be optimized (the objective function) and '''x''' are the design variables for which optimal settings have to be found. This definition can be extended to multiple objectives '''f''' and by constraints. == Some Important Expressions == === Manual vs. Automated Optimization === Optimization is an everyday task. For example, searching the fastest way to work or home is an optimization problem. We speak about ''automated'' optimization, if a computer algorithm solves the problem in an automated fashion, i.e. without user interaction. === Objective Function === Optimization typically searches for the optimal solution to a problem. For automated optimization, the problem must be encoded in a mathematical function ''f'', which has to be either minimized or maximized. In OpenDino, only minimization is considered as maximization can be expressed as: max(f) = - min(-f) === Design Variables === The optimal solution is searched by modifying the design variables '''x'''. The objective function depends on the design variables: f = f('''x'''). === Multiple Objectives === If multiple objectives '''f''' should be optimized, then a multi-objective optimization problem has to be solved. Some optimization algorithms search concurrently for multiple compromise solutions for the objectives (Pareto optimization) or a single compromise solution, defined as a weighed sum of all objectives. === Constraints === While the optimization algorithm tries to minimize all objectives, constraints simply have to be fulfilled. For example, the maximal stress in a truss should not exceed a certain limit. If the stress is below the limit, no advantage is gained. If the stress is above the limit, the solution is typically constrained by a penalty value, which increases with increasing constraint violation. === Direct vs. Indirect Search === In OpenDino, we implement optimization algorithms that search a problem in an iterative fashion, i.e. by computing several different solutions to the problem. The best solution is returned. This iterative search can be either direct or indirect: '''Direct''' search uses only direct information (i.e. the objective and constraint value(s). '''Indirect''' algorithms use indirect information (i.e. gradient and/or higher order derivative information of the objective(s) and constraint(s)). === Stochastic vs. Deterministic Algorithms === While '''stochastic''' algorithms such as Evolutionary Algorithms and Particle Swarm use random values in their search method, '''deterministic''' algorithms like the Simplex Method or gradient based search do not. Installation 0 40 122 99 2013-09-12T20:19:00Z Admin 1 wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Start == Start OpenDINO with either: * double clicking on the jar (this is simple, however, not activated on all plattforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDINO</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDINO archive file <tt>opendino.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. In Windows, create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDINO %* In Linux, create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDINO $* To make the file executable enter in the shell: chmod u+x opendino.sh 128 122 2013-09-27T18:12:16Z Dirk 2 /* Writing a Shell Script */ wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Start == Start OpenDINO with either: * double clicking on the jar (this is simple, however, not activated on all plattforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDINO</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDINO archive file <tt>opendino.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. For '''Windows''', create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDINO %* For '''Linux''', create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDINO $* To make the file executable enter in the shell: chmod u+x opendino.sh 147 128 2014-03-19T22:02:57Z Admin 1 /* Start */ wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Start == Start OpenDino with either: * double clicking on the jar (this is simple, however, not activated on all plattforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDINO</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDINO archive file <tt>opendino.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. For '''Windows''', create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDINO %* For '''Linux''', create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDINO $* To make the file executable enter in the shell: chmod u+x opendino.sh 148 147 2014-03-19T22:03:30Z Admin 1 /* Start */ wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Start == Start OpenDino with either: * double clicking on the jar (this is simple, however, not activated on all plattforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDino</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDINO archive file <tt>opendino.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. For '''Windows''', create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDINO %* For '''Linux''', create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDINO $* To make the file executable enter in the shell: chmod u+x opendino.sh Documentation/Modules/Interfaces 0 38 123 92 2013-09-12T20:20:31Z Admin 1 wikitext text/x-wiki ==Basics== The basic element of each OpenDINO optimization or learning environment is still the <code>Module</code>. Each optimization problem, each optimization algorithm and each learning algorithm is a module. A class that is used as a module must implement the interface <code>org.opendino.core.modules.IModule</code> (see [[Documentation/IModule | IModule]]). The whole structure of modules in OpenDINO is based on interfaces. The reason for this is that classes that are used as <code>Modules</code> may be part of a class hierarchy and thus they cannot inherit from a basic module class. There are <code>Modules</code> that can be run, e.g. optimization algorithms. All these modules implement the interface <code>org.opendino.core.modules.IRunnable</code>. Each optimization setup consists of at least two linked <code>Modules</code>: a problem and an optimizer. The interfaces for these modules are <code>org.opendino.core.modules.optimization.IEvaluable</code> and <code>IEvaluator</code>, respecively. The corresponding pair for a learning task is <code>org.opendino.core.modules.learning.IDataSource</code> and <code>IDataSink</code>. Modules can be linked between other modules. E.g. the protocoller is a <code>Module</code> that you can link between an optimizer and a problem. In such a case, all <code>Modules</code> except the optimizer must implement the interface <code>Evaluable</code> and all modules except the problem must implement the interface <code>IEvaluator</code>. This means that the modules form a chain that looks like this (here, two intermediate modules are shown): <pre> [IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable] </pre> where the topmost evaluator is the optimizer and the bottommost evaluable is the optimization problem. The meaning of this picture is that the optimizer produces points and sends them through the chain to the problem. The problem evaluates the points, assigning each point its objective value(s). These are read by the optimizer which then tries to create better points, etc. The same kind of interaction chain is possible for learners and data sources. But there, the information flow is mainly in unidirectional: from the data source to the data sink. ==The Interfaces== ===IModule=== This is the basic interface implemented by all modules. It contains methods for the initialisation and checking of the module and for the management of the options of the module. ===IRunnable=== This interfaces is implemented by all modules that can be run. When a module is run, it executes its optimization algorithm. In the future this could be any kind of algorithm. The interface contains methods to start and stop the execution of the module. ===IEvaluable=== Every module that represents an optimization problem implements the interface IEvaluable. This means that the module can evaluate a given solution. To that end, it looks at the design variables of a solution object it gets from an optimizer and sets the objective value(s) of that object accordingly. If a module is linked before a problem module, it must implement IEvaluable and delegate the evaluation of the solutions to the problem module. Thus, the optmimizer doesn't know if the module right after it is the problem itself or an intermediate module, it just calls the evaluate method of its successor module. IEvaluable contains methods to evaluate one solution or an array of solutions and a method to get the properties of the problem. ===IEvaluator=== A module that can call an evaluable to evaluate solutions implements the interface IEvaluator. Normally, an evaluator is an optimizer module, but any intermediate module between the optimizer and the problem must implement this interface as well. Otherwise, it wouldn't be able to call the problem to evaluate the solutions. IEvaluator contains methods to get and set the references to the evaluables and to check if these links are OK. ===IDataSource=== A module that provides data. This can be a file reader, the protocoller, or other modules that can produce or store data. The getData() method is the most important one. ===IDataSink=== A module implementing this interface represents a learner. It is linked with a data source and processes the given data. Very different kinds of processing are possible. A data viewer can just display the data, a neural network can learn a function from the data or a statistics module can compute some statistics on the data etc. 152 123 2014-03-19T22:06:03Z Admin 1 wikitext text/x-wiki ==Basics== The basic element of each OpenDino optimization or learning environment is still the <code>Module</code>. Each optimization problem, each optimization algorithm and each learning algorithm is a module. A class that is used as a module must implement the interface <code>org.opendino.core.modules.IModule</code> (see [[Documentation/IModule | IModule]]). The whole structure of modules in OpenDino is based on interfaces. The reason for this is that classes that are used as <code>Modules</code> may be part of a class hierarchy and thus they cannot inherit from a basic module class. There are <code>Modules</code> that can be run, e.g. optimization algorithms. All these modules implement the interface <code>org.opendino.core.modules.IRunnable</code>. Each optimization setup consists of at least two linked <code>Modules</code>: a problem and an optimizer. The interfaces for these modules are <code>org.opendino.core.modules.optimization.IEvaluable</code> and <code>IEvaluator</code>, respecively. The corresponding pair for a learning task is <code>org.opendino.core.modules.learning.IDataSource</code> and <code>IDataSink</code>. Modules can be linked between other modules. E.g. the protocoller is a <code>Module</code> that you can link between an optimizer and a problem. In such a case, all <code>Modules</code> except the optimizer must implement the interface <code>Evaluable</code> and all modules except the problem must implement the interface <code>IEvaluator</code>. This means that the modules form a chain that looks like this (here, two intermediate modules are shown): <pre> [IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable and IEvaluator] | [IEvaluable] </pre> where the topmost evaluator is the optimizer and the bottommost evaluable is the optimization problem. The meaning of this picture is that the optimizer produces points and sends them through the chain to the problem. The problem evaluates the points, assigning each point its objective value(s). These are read by the optimizer which then tries to create better points, etc. The same kind of interaction chain is possible for learners and data sources. But there, the information flow is mainly in unidirectional: from the data source to the data sink. ==The Interfaces== ===IModule=== This is the basic interface implemented by all modules. It contains methods for the initialisation and checking of the module and for the management of the options of the module. ===IRunnable=== This interfaces is implemented by all modules that can be run. When a module is run, it executes its optimization algorithm. In the future this could be any kind of algorithm. The interface contains methods to start and stop the execution of the module. ===IEvaluable=== Every module that represents an optimization problem implements the interface IEvaluable. This means that the module can evaluate a given solution. To that end, it looks at the design variables of a solution object it gets from an optimizer and sets the objective value(s) of that object accordingly. If a module is linked before a problem module, it must implement IEvaluable and delegate the evaluation of the solutions to the problem module. Thus, the optmimizer doesn't know if the module right after it is the problem itself or an intermediate module, it just calls the evaluate method of its successor module. IEvaluable contains methods to evaluate one solution or an array of solutions and a method to get the properties of the problem. ===IEvaluator=== A module that can call an evaluable to evaluate solutions implements the interface IEvaluator. Normally, an evaluator is an optimizer module, but any intermediate module between the optimizer and the problem must implement this interface as well. Otherwise, it wouldn't be able to call the problem to evaluate the solutions. IEvaluator contains methods to get and set the references to the evaluables and to check if these links are OK. ===IDataSource=== A module that provides data. This can be a file reader, the protocoller, or other modules that can produce or store data. The getData() method is the most important one. ===IDataSink=== A module implementing this interface represents a learner. It is linked with a data source and processes the given data. Very different kinds of processing are possible. A data viewer can just display the data, a neural network can learn a function from the data or a statistics module can compute some statistics on the data etc. Documentation/Compiling 0 28 124 103 2013-09-12T20:21:51Z Admin 1 wikitext text/x-wiki Check the [[Documentation/Software/Requirements | software requirements]] first! Then [[Documentation/Download/SVN | download]] the source code. == Using an IDE == OpenDINO is currently developed with [http://www.netbeans.org/ NetBeans], as many windows are generated with the Swing framework. However, other platforms such as Eclipse [http://www.eclipse.org/ Eclipse] can also be used. Compiling and executing the software in a shell is also supported using <code>Makefile</code>s as build system. == Compiling in a Shell == Two platforms are currently tested: <ul> <li><b>Linux: </b> A typical standard implementation of Linux with a Java JDK should contain all required programs for compiling and running OpenDINO. </li> <li><b>Windows: </b> [http://www.cygwin.com/ Cygwin (R)] is used to compile OpenDINO on Windows(R) platforms. </li> </ul> Compiling on other platforms has not been tested. === Creating the Makefile === The Makefile is automatically generated by the script <tt>createMakefile</tt>. In a shell, go to the subfolder <tt>opendino/trunk</tt> and execute: <pre>$ ./createMakefile</pre> Enter <pre>$ make</pre> to list the possible actions. === Compiling the Source Code & Executing OpenDINO === For Linux systems enter <pre>$ make javac $ make gui</pre> to compile and start OpenDINO in GUI mode. For Windows systems enter <pre>$ make javac_cygwin $ make gui</pre> 156 124 2014-03-19T22:08:10Z Admin 1 wikitext text/x-wiki Check the [[Documentation/Software/Requirements | software requirements]] first! Then [[Documentation/Download/SVN | download]] the source code. == Using an IDE == OpenDino is currently developed with [http://www.netbeans.org/ NetBeans], as many windows are generated with the Swing framework. However, other platforms such as Eclipse [http://www.eclipse.org/ Eclipse] can also be used. Compiling and executing the software in a shell is also supported using <code>Makefile</code>s as build system. == Compiling in a Shell == Two platforms are currently tested: <ul> <li><b>Linux: </b> A typical standard implementation of Linux with a Java JDK should contain all required programs for compiling and running OpenDino. </li> <li><b>Windows: </b> [http://www.cygwin.com/ Cygwin (R)] is used to compile OpenDino on Windows(R) platforms. </li> </ul> Compiling on other platforms has not been tested. === Creating the Makefile === The Makefile is automatically generated by the script <tt>createMakefile</tt>. In a shell, go to the subfolder <tt>opendino/trunk</tt> and execute: <pre>$ ./createMakefile</pre> Enter <pre>$ make</pre> to list the possible actions. === Compiling the Source Code & Executing OpenDino === For Linux systems enter <pre>$ make javac $ make gui</pre> to compile and start OpenDino in GUI mode. For Windows systems enter <pre>$ make javac_cygwin $ make gui</pre> Documentation/Modules/IModule 0 36 125 85 2013-09-12T20:22:18Z Admin 1 wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenDINO must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> '''Summary''' Properties of a <tt>Module</tt> should only change when the Method <tt>init()</tt> is called. This guarantees that <tt>Modules</tt> do not change while they are checked or other <tt>Modules</tt> are running! == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <tt>Module</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings 153 125 2014-03-19T22:06:25Z Admin 1 wikitext text/x-wiki =Interface <tt>IModule</tt>= All <tt>Modules</tt> in OpenDino must implement the Interface <tt> IModule</tt>. The interface contains a set of methods. The purpose and the functionality of these methods is described in the following sections. Furthermore, the <tt>Modules</tt> must have a class <tt>Options</tt> that comprises all user settings as simple types (<tt>boolean</tt>, <tt>long</tt>, <tt>double</tt>, <tt>String</tt>) or vectors/arrays of those types. The options are automatically read using Java Reflection API. It is essential for a correct program execution to ensure that the guidelines are exactly followed by the <tt>Modules</tt> programmers. == Method <tt>Options getOptions()</tt> == # Functionality #* returns the current <tt>Options</tt> class. #* ensure that cloned <tt>Options</tt> are returned! # Objectives #* returning a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Module</tt> has no impact. # Sample Code <pre> public Options getOptions() { return (Options) options.clone(); } </pre> == Method <tt>void setOptions(Options o)</tt> == # Functionality #* sets the <tt>Options</tt> for a <tt>Module</tt> #* ensure that <tt>Options</tt> are cloned before they are set! # Objectives #* setting a clone of the <tt>Options</tt> ensures that changing <tt>Options</tt> outside the <tt>Modules</tt> has no impact. # Sample Code <pre> public void setOptions(Options o) { options = (Options) o.clone(); } </pre> == Method <tt>String check() </tt> == # Functionality #* check, if this <tt>Modules</tt> is set up correctly, i.e. checks if #** the <tt>Options</tt> are correct? #** all required <tt>Connections</tt> of the <tt>Modules</tt> are available (e.g. an optimization algorithm may require one connection to a problem) #** the settings (e.g. Options) agree with the properties of connected <tt>Modules</tt>? #* checking requires several steps: #*# if the <tt>Modules</tt> is connected to other <tt>Modules</tt>, it should first #*#* call <tt>check()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt>’s check is unsuccessful (i.e. a non-empty string is returned). #*# if checking the connected <tt>Modules</tt> was successful, the <tt>Modules</tt> should check itself and return a non-empty string if checking fails. # Properties #* checks are usually fast # Return Value #* empty string “” if successful, else a message #Sample Code for Optimization: <pre> public String check(){ s = ""; // 1. check connected modules for (Object o: evaluables) { String so=((IModule)o).check(); if (so.length > 0){ s += “checking connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “checking connected modules failed: \\n” + s; // 2. check this module, return String if not successful if (opt.verbose > 3) s+= "Option verbose must be between 0 and 3, but is set to " + opt.verbose + "\\n"; // … return s; } </pre> == Method <tt>String init(long index)</tt> == Currently the <tt>index</tt> is not used! # Functionality #* initialize <tt>Modules</tt> such that executing optimizations or learning processes is possible. #* Initialization requires several steps: #*# check if the argument (index) has changed compared to the time of the last check (see also example below). If the argument has not changed, the system has not changed and a new initialization is not necessary. Thus, return the message of the previous check and do no further checking. #*# If the <tt>Modules</tt> is connected to other Modules, it should first #*#* call the <tt>init()</tt> of the connected <tt>Modules</tt> and #*#* return a message, if any connected <tt>Modules</tt> fails to initialize #*# If the initialization of the connected <tt>Modules</tt> is successful, it should then get the properties of the connected <tt>Modules</tt> #*#* return a message, if any connected <tt>Modules</tt> fails to return properties. #*# Initialize itself and return a string if initialization fails. # Objectives #* initialization should never lead to exceptions. #* It must not call <tt>check()</tt>! # Properties #* the <tt>init()</tt> method is the only method of <tt>IModule</tt> that may require CPU time (e.g. for loading a large data source). Thus this method should not be called too often. # Advanced Features #* the<tt>Modules</tt> should check if initialization is necessary. Typically initialization is necessary when #** the <tt>Options</tt> of the<tt>Modules</tt> are changed #** the connections of the<tt>Modules</tt> changed #** the properties of the connected <i>Modules</i> changed #* if nothing changed, it should not initialize in order to save computer resources # Return Value #* empty string “” if successful, else a message # Sample Code for Optimization: <pre> public string init(long init_id){ s = ""; if (this.init_id == init_id){ return [the message of the last initialization]; this.init_id = init_id; for (Object o: evaluables) { String so=((IModule)o).init(init_id); if (so.length > 0){ s += “initializing connected module with ID “ + (IModule o).getID() + “ failed with message: \\n” + so; } } if (s.length > 0){ return “initializing connected modules failed: \\n” + s; // initialize this module, return String if not successful // … return s; } </pre> '''Summary''' Properties of a <tt>Module</tt> should only change when the Method <tt>init()</tt> is called. This guarantees that <tt>Modules</tt> do not change while they are checked or other <tt>Modules</tt> are running! == Method <tt>int getID()</tt> == # Functionality #* gets the ID for this <tt>Module</tt>. # Objectives #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>void setID(int id)</tt> == # Functionality #* sets the ID for this <tt>Module</tt>. # Objectives #* IDs should be set at the time of instantiation and should not be modified. #* the ID is important for debugging, e.g. <tt>Modules</tt> can identify to which other <tt>Modules</tt> they are connected. == Method <tt>String getInfo()</tt> == # Functionality #* Returns a String in HTML or plain text, describing the module #* A<tt>Modules</tt> such as an optimization algorithm should return the problem properties when it this<tt>Modules</tt> is called. # Objectives #* get information about<tt>Modules</tt> properties for checking or debugging user settings Documentation/Modules/TheCode 0 35 126 69 2013-09-12T20:22:50Z Admin 1 wikitext text/x-wiki OpenDINO consists of 3 parts # the GUI # the Core # many Modules == The GUI == The graphical user interface (GUI) allows setting complex systems by clicking and dragging. It allows to add or remove <code>Modules</code> and to define their interactions by so called <code>Connections</code>. == The Core == The <code>Core</code> handles all file operation as well as provides the basic functionality such that <code>Modules</code> can be implemented. == The Modules == The <code>Modules</code> contain all functionality such as optimization algorithms, protocol functions, visualization of results, and optimization problems. All <code>Modules</code> must implement the interface [ <code>IModule</code>] 154 126 2014-03-19T22:06:50Z Admin 1 wikitext text/x-wiki OpenDino consists of 3 parts # the GUI # the Core # many Modules == The GUI == The graphical user interface (GUI) allows setting complex systems by clicking and dragging. It allows to add or remove <code>Modules</code> and to define their interactions by so called <code>Connections</code>. == The Core == The <code>Core</code> handles all file operation as well as provides the basic functionality such that <code>Modules</code> can be implemented. == The Modules == The <code>Modules</code> contain all functionality such as optimization algorithms, protocol functions, visualization of results, and optimization problems. All <code>Modules</code> must implement the interface [ <code>IModule</code>] Documentation/Machine Learning 0 34 127 65 2013-09-12T20:23:10Z Admin 1 wikitext text/x-wiki == Introduction == Given some data, machine learning infers relations among them. Well known representatives of machine learning are Artificial Neural Networks and Support Vector Machines. The goal in OpenDINO is to use these techniques to build models either to speed up optimization runs or to post-process the result both [[Documentation/DoE | DoE]] and [[Documentation/Optimization | optimization]]. 155 127 2014-03-19T22:07:16Z Admin 1 wikitext text/x-wiki == Introduction == Given some data, machine learning infers relations among them. Well known representatives of machine learning are Artificial Neural Networks and Support Vector Machines. The goal in OpenDino is to use these techniques to build models either to speed up optimization runs or to post-process the result both [[Documentation/DoE | DoE]] and [[Documentation/Optimization | optimization]]. Datei:MainGUI.png 6 43 132 2014-03-18T20:36:35Z Dirk 2 wikitext text/x-wiki 133 132 2014-03-18T21:24:50Z Dirk 2 uploaded a new version of &quot;[[File:MainGUI.png]]&quot; wikitext text/x-wiki Datei:ModuleRightclick.png 6 44 134 2014-03-18T21:25:35Z Dirk 2 wikitext text/x-wiki Datei:Optimization.png 6 45 135 2014-03-18T21:26:01Z Dirk 2 wikitext text/x-wiki 136 135 2014-03-18T21:28:18Z Dirk 2 uploaded a new version of &quot;[[File:Optimization.png]]&quot; wikitext text/x-wiki Datei:DataViewer.png 6 46 137 2014-03-18T21:28:55Z Dirk 2 wikitext text/x-wiki Datei:Opendino 0.1.jar 6 48 146 2014-03-19T22:01:36Z Admin 1 wikitext text/x-wiki Documentation/Notation 0 26 160 33 2015-10-21T18:55:36Z Dirk 2 /* Terminology */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''f'', '''f''' | objective function(s) |- | ''x'', '''x''' | design variable(s) |- | ''g'', '''g''' | constraint(s) |- |} == Terminology == :{| cellpadding="10" width="90%" |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x''')''', and optionally of additional values '''a'''. |- | ''design variables'' | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- |} 161 160 2015-10-21T19:09:20Z Dirk 2 /* Terminology */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''f'', '''f''' | objective function(s) |- | ''x'', '''x''' | design variable(s) |- | ''g'', '''g''' | constraint(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |- | ''design variables'' | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''constraints'' | Constraints '''c''' are criteria that have to be fulfilled. OpenDino defines a constraint ''c'' as * fulfilled, if ''c'' =< 0 * violated, if ''c'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''c''). |-|} 162 161 2015-10-21T19:12:16Z Dirk 2 /* Terminology */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''f'', '''f''' | objective function(s) |- | ''x'', '''x''' | design variable(s) |- | ''g'', '''g''' | constraint(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''additionals'' | Additionals '''a''' are additional values in a '''solution''' that are for information only and do not influence the optimization. For example, if an optimization problem returns an objective function that is a sum of several values, these values could be added to the solution as additional values '''a'''. |- | ''constraints'' | Constraints '''c''' are criteria that have to be fulfilled. OpenDino defines a constraint ''c'' as * fulfilled, if ''c'' =< 0 * violated, if ''c'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''c''). |- | ''design variables'' | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |-|} 163 162 2015-10-21T19:12:53Z Dirk 2 /* Terminology */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''f'', '''f''' | objective function(s) |- | ''x'', '''x''' | design variable(s) |- | ''g'', '''g''' | constraint(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''additionals'' | Additionals '''a''' are additional values in a '''solution''' that are for information only and do not influence the optimization. For example, if an optimization problem returns an objective function that is a sum of several values, these values could be added to the solution as additional values '''a'''. |- | ''constraints'' | Constraints '''g''' are criteria that have to be fulfilled. OpenDino defines a constraint ''g'' as * fulfilled, if ''g'' =< 0 * violated, if ''g'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''g''). |- | ''design variables'' | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |-|} 164 163 2015-10-21T19:13:56Z Dirk 2 /* Symbols */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''a'', '''a''' | additionals, i.e. additional value(s) | ''f'', '''f''' | objective function(s) |- | ''x'', '''x''' | design variable(s) |- | ''g'', '''g''' | constraint(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''additionals'' | Additionals '''a''' are additional values in a '''solution''' that are for information only and do not influence the optimization. For example, if an optimization problem returns an objective function that is a sum of several values, these values could be added to the solution as additional values '''a'''. |- | ''constraints'' | Constraints '''g''' are criteria that have to be fulfilled. OpenDino defines a constraint ''g'' as * fulfilled, if ''g'' =< 0 * violated, if ''g'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''g''). |- | ''design variables'' | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |-|} 165 164 2015-10-21T19:14:10Z Dirk 2 /* Symbols */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''a'', '''a''' | additionals, i.e. additional value(s) |- | ''f'', '''f''' | objective function(s) |- | ''x'', '''x''' | design variable(s) |- | ''g'', '''g''' | constraint(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''additionals'' | Additionals '''a''' are additional values in a '''solution''' that are for information only and do not influence the optimization. For example, if an optimization problem returns an objective function that is a sum of several values, these values could be added to the solution as additional values '''a'''. |- | ''constraints'' | Constraints '''g''' are criteria that have to be fulfilled. OpenDino defines a constraint ''g'' as * fulfilled, if ''g'' =< 0 * violated, if ''g'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''g''). |- | ''design variables'' | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |-|} 166 165 2015-10-21T19:14:29Z Dirk 2 /* Symbols */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''a'', '''a''' | additionals, i.e. additional value(s) |- | ''f'', '''f''' | objective function(s) |- | ''g'', '''g''' | constraint(s) |- | ''x'', '''x''' | design variable(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''additionals'' | Additionals '''a''' are additional values in a '''solution''' that are for information only and do not influence the optimization. For example, if an optimization problem returns an objective function that is a sum of several values, these values could be added to the solution as additional values '''a'''. |- | ''constraints'' | Constraints '''g''' are criteria that have to be fulfilled. OpenDino defines a constraint ''g'' as * fulfilled, if ''g'' =< 0 * violated, if ''g'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''g''). |- | ''design variables'' | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''solution'' | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |-|} 182 166 2015-10-25T17:38:30Z Dirk 2 /* Terminology */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''a'', '''a''' | additionals, i.e. additional value(s) |- | ''f'', '''f''' | objective function(s) |- | ''g'', '''g''' | constraint(s) |- | ''x'', '''x''' | design variable(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''additionals'' | Additionals '''a''' are additional values in a '''solution''' that are for information only and do not influence the optimization. For example, if an optimization problem returns an objective function that is a sum of several values, these values could be added to the solution as additional values '''a'''. |- | ''constraints'' | Constraints '''g''' are criteria that have to be fulfilled. OpenDino defines a constraint ''g'' as * fulfilled, if ''g'' =< 0 * violated, if ''g'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''g''). |- | ''design variables'' | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''solution'' <div id="solution"></div> | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |-|} 183 182 2015-10-25T17:39:39Z Dirk 2 /* Terminology */ wikitext text/x-wiki == Notation == As a math parser is currently not used, we write the math equations as formated text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''a'', '''a''' | additionals, i.e. additional value(s) |- | ''f'', '''f''' | objective function(s) |- | ''g'', '''g''' | constraint(s) |- | ''x'', '''x''' | design variable(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''additionals'' <div id="additionals"></div> | Additionals '''a''' are additional values in a '''solution''' that are for information only and do not influence the optimization. For example, if an optimization problem returns an objective function that is a sum of several values, these values could be added to the solution as additional values '''a'''. |- | ''constraints'' <div id="constraints"></div> | Constraints '''g''' are criteria that have to be fulfilled. OpenDino defines a constraint ''g'' as * fulfilled, if ''g'' =< 0 * violated, if ''g'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''g''). |- | ''design variables'' <div id="design_variables"></div> | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' <div id="objectives"></div> | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''solution'' <div id="solution"></div> | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |-|} Main Page 0 2 167 138 2015-10-25T10:52:25Z Dirk 2 /* Welcome to OpenDino */ wikitext text/x-wiki = Welcome to '''OpenDino''' = '''OpenDino ''' is an open source platform for optimization, design of experiment and learning. The platform is a successor of the terminated [http://www.openopal.org OpenOpal] project. '''OpenDino''' is written in Java. It provides a graphical user interface (GUI) and a platform which simplifies integration of new algorithms as "Modules". Implemented Modules Evolutionary Algorithms: * CMA-ES * (1+1)-ES * Differential Evolution Deterministic optimization algorithm: * SIMPLEX Learning: * a simple Artificial Neural Net Optimization problems: * test functions * interface for executing other programs (solvers) * parallel execution of problems * distributed execution of problems via socket connection between computers Others: * data storage * data analyser and viewer Contact: * [mailto:help@opendino.org help@opendino.org] Documentation/Modules/OptAlgCMA 0 13 168 43 2015-10-25T10:54:56Z Dirk 2 /* Summary */ wikitext text/x-wiki ==Summary== This optimization module is an implementation of the Evolution Strategy with Covariance Matrix Adaptation (CMA-ES). It uses the source code of Nikolaus Hansen ( https://www.lri.fr/~hansen/cmaes_inmatlab.html#java ). Among the tree evolutionary operators (Recombination, Mutation, Selection), the mutation is considered the most important. Mutation is performed by sampling a Covariance Matrix. The parameters of the matrix (variances and correlation coefficients) are adapted by tracking the path of successful mutations. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - generates new solutions by sampling a probability function, however deterministic adaptation of the covariance matrix. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | yes |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently only described in the references (see below). ==Module Description== === Initialization === The algorithm distinguishes several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). === Optimization === The algorithm contains stochastic processes and operates with a population. Parallelization on the basis of the population size is implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== Detailed information is given at http://www.lri.fr/~hansen/ . 170 168 2015-10-25T10:58:11Z Dirk 2 /* General */ wikitext text/x-wiki ==Summary== This optimization module is an implementation of the Evolution Strategy with Covariance Matrix Adaptation (CMA-ES). It uses the source code of Nikolaus Hansen ( https://www.lri.fr/~hansen/cmaes_inmatlab.html#java ). Among the tree evolutionary operators (Recombination, Mutation, Selection), the mutation is considered the most important. Mutation is performed by sampling a Covariance Matrix. The parameters of the matrix (variances and correlation coefficients) are adapted by tracking the path of successful mutations. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - generates new solutions by sampling a probability function, however deterministic adaptation of the covariance matrix. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no, use e.g. the Module [[Documentation/Modules/ConstraintHandler | <code>ConstraintHandler</code>. |- ! Boundary handling | yes, the module [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> is integrated in this module. |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently only described in the references (see below). ==Module Description== === Initialization === The algorithm distinguishes several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). === Optimization === The algorithm contains stochastic processes and operates with a population. Parallelization on the basis of the population size is implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== Detailed information is given at http://www.lri.fr/~hansen/ . 171 170 2015-10-25T10:59:54Z Dirk 2 /* Source Code */ wikitext text/x-wiki ==Summary== This optimization module is an implementation of the Evolution Strategy with Covariance Matrix Adaptation (CMA-ES). It uses the source code of Nikolaus Hansen ( https://www.lri.fr/~hansen/cmaes_inmatlab.html#java ). Among the tree evolutionary operators (Recombination, Mutation, Selection), the mutation is considered the most important. Mutation is performed by sampling a Covariance Matrix. The parameters of the matrix (variances and correlation coefficients) are adapted by tracking the path of successful mutations. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - generates new solutions by sampling a probability function, however deterministic adaptation of the covariance matrix. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no, use e.g. the Module [[Documentation/Modules/ConstraintHandler | <code>ConstraintHandler</code>. |- ! Boundary handling | yes, the module [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> is integrated in this module. |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently only described in the references (see below). ==Module Description== === Initialization === The algorithm distinguishes several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). === Optimization === The algorithm contains stochastic processes and operates with a population. Parallelization on the basis of the population size is implemented. ==Usage== ... todo ==Source Code== http://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/fr/inria/optimization/cmaes/ http://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optAlg/OptAlgCMA.java ==References== Detailed information is given at http://www.lri.fr/~hansen/ . 172 171 2015-10-25T11:00:06Z Dirk 2 /* Source Code */ wikitext text/x-wiki ==Summary== This optimization module is an implementation of the Evolution Strategy with Covariance Matrix Adaptation (CMA-ES). It uses the source code of Nikolaus Hansen ( https://www.lri.fr/~hansen/cmaes_inmatlab.html#java ). Among the tree evolutionary operators (Recombination, Mutation, Selection), the mutation is considered the most important. Mutation is performed by sampling a Covariance Matrix. The parameters of the matrix (variances and correlation coefficients) are adapted by tracking the path of successful mutations. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - generates new solutions by sampling a probability function, however deterministic adaptation of the covariance matrix. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no, use e.g. the Module [[Documentation/Modules/ConstraintHandler | <code>ConstraintHandler</code>. |- ! Boundary handling | yes, the module [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> is integrated in this module. |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently only described in the references (see below). ==Module Description== === Initialization === The algorithm distinguishes several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). === Optimization === The algorithm contains stochastic processes and operates with a population. Parallelization on the basis of the population size is implemented. ==Usage== ... todo ==Source Code== http://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/fr/inria/optimization/cmaes/ http://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optAlg/OptAlgCMA.java ==References== Detailed information is given at http://www.lri.fr/~hansen/ . Documentation/Modules 0 11 169 151 2015-10-25T10:56:40Z Dirk 2 /* Optimization in General */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Not implemented, yet. === Direct, Deterministic Algorithms === * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>: Elitist Evolution Strategy with Covariance Matrix Adaptation]] * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>: Particle Swarm Optimization Algorithm]] == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms without Bound Handling]] * [[Documentation/Modules/ConstraintHandler | <code>BoundHandler</code> For Optimization Algorithms without Constraint Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] 173 169 2015-10-25T11:06:17Z Dirk 2 /* Single Objective Optimization Algorithms */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Indirect algorithms use gradient or higher order derivative information in the optimization. Not implemented, yet. === Direct, Deterministic Algorithms === These algorithms neither use gradient information nor stochastic processes. * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === These algorithms do not use gradient information but require stochastic processes (i.e. random numbers) in their search. * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>: Elitist Evolution Strategy with Covariance Matrix Adaptation]] * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>: Particle Swarm Optimization Algorithm]] == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms without Bound Handling]] * [[Documentation/Modules/ConstraintHandler | <code>BoundHandler</code> For Optimization Algorithms without Constraint Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] 174 173 2015-10-25T11:07:30Z Dirk 2 /* Indirect, Stochastic Algorithms */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Indirect algorithms use gradient or higher order derivative information in the optimization. Not implemented, yet. === Direct, Deterministic Algorithms === These algorithms neither use gradient information nor stochastic processes. * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === These algorithms do not use gradient information but require stochastic processes (i.e. random numbers) in their search. * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule: the (1+1)-ES]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation: the CMA-ES]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>: Elitist Evolution Strategy with Covariance Matrix Adaptation]] * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>: Particle Swarm Optimization Algorithm]] == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms without Bound Handling]] * [[Documentation/Modules/ConstraintHandler | <code>BoundHandler</code> For Optimization Algorithms without Constraint Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] 175 174 2015-10-25T11:08:17Z Dirk 2 /* Single and Multi-Objective Optimization Algorithms */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Indirect algorithms use gradient or higher order derivative information in the optimization. Not implemented, yet. === Direct, Deterministic Algorithms === These algorithms neither use gradient information nor stochastic processes. * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>: Nelder-Mead Simplex Algorithm]] === Indirect, Stochastic Algorithms === These algorithms do not use gradient information but require stochastic processes (i.e. random numbers) in their search. * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule: the (1+1)-ES]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation: the CMA-ES]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>]]: Elitist Evolution Strategy with Covariance Matrix Adaptation * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>]]: Particle Swarm Optimization Algorithm == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms without Bound Handling]] * [[Documentation/Modules/ConstraintHandler | <code>BoundHandler</code> For Optimization Algorithms without Constraint Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] 176 175 2015-10-25T11:08:48Z Dirk 2 /* Direct, Deterministic Algorithms */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Indirect algorithms use gradient or higher order derivative information in the optimization. Not implemented, yet. === Direct, Deterministic Algorithms === These algorithms neither use gradient information nor stochastic processes. * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>]]: Nelder-Mead Simplex Algorithm === Indirect, Stochastic Algorithms === These algorithms do not use gradient information but require stochastic processes (i.e. random numbers) in their search. * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>: 1+1 Evolution Strategy with 1/5 Success Rule: the (1+1)-ES]] ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>: A Multi-member Evolution Strategy with Covariance Matrix Adaptation: the CMA-ES]] == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>]]: Elitist Evolution Strategy with Covariance Matrix Adaptation * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>]]: Particle Swarm Optimization Algorithm == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms without Bound Handling]] * [[Documentation/Modules/ConstraintHandler | <code>BoundHandler</code> For Optimization Algorithms without Constraint Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] 177 176 2015-10-25T11:09:03Z Dirk 2 /* Indirect, Stochastic Algorithms */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Indirect algorithms use gradient or higher order derivative information in the optimization. Not implemented, yet. === Direct, Deterministic Algorithms === These algorithms neither use gradient information nor stochastic processes. * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>]]: Nelder-Mead Simplex Algorithm === Indirect, Stochastic Algorithms === These algorithms do not use gradient information but require stochastic processes (i.e. random numbers) in their search. * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>]]: 1+1 Evolution Strategy with 1/5 Success Rule: the (1+1)-ES ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>]]: A Multi-member Evolution Strategy with Covariance Matrix Adaptation: the CMA-ES == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>]]: Elitist Evolution Strategy with Covariance Matrix Adaptation * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>]]: Particle Swarm Optimization Algorithm == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>: A Module Containing Different DoE plans]] * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>: Uniform Random Sampling]] == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code> For Optimization Algorithms without Bound Handling]] * [[Documentation/Modules/ConstraintHandler | <code>BoundHandler</code> For Optimization Algorithms without Constraint Handling]] == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code> A Simple Test Problem]] * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>: A Set of Single Objective Test Problem]] * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>: A Set of Multi-Objective Test Problem]] == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>: Artificial Neural Network]] == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>: A Framework for Surrogate Managing]] 178 177 2015-10-25T11:10:43Z Dirk 2 wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Indirect algorithms use gradient or higher order derivative information in the optimization. Not implemented, yet. === Direct, Deterministic Algorithms === These algorithms neither use gradient information nor stochastic processes. * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>]]: Nelder-Mead Simplex Algorithm === Indirect, Stochastic Algorithms === These algorithms do not use gradient information but require stochastic processes (i.e. random numbers) in their search. * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>]]: 1+1 Evolution Strategy with 1/5 Success Rule: the (1+1)-ES ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>]]: A Multi-member Evolution Strategy with Covariance Matrix Adaptation: the CMA-ES == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>]]: Elitist Evolution Strategy with Covariance Matrix Adaptation * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>]]: Particle Swarm Optimization Algorithm == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>]]: A Module Containing Different DoE plans * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>]]: Uniform Random Sampling (Monte Carlo) == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code>]]: For Optimization Algorithms without Bound Handling * [[Documentation/Modules/ConstraintHandler | <code>ConstraintHandler </code>]]: For Optimization Algorithms without Constraint Handling == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code>]] A Simple Test Problem * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>]]: A Set of Single Objective Test Problem * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>]]: A Set of Multi-Objective Test Problem == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>]]: Artificial Neural Network == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>]]: A Framework for Surrogate Managing 185 178 2015-10-25T17:46:41Z Dirk 2 /* Optimization Problems */ wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Indirect algorithms use gradient or higher order derivative information in the optimization. Not implemented, yet. === Direct, Deterministic Algorithms === These algorithms neither use gradient information nor stochastic processes. * [[Documentation/Modules/OptAlgSIMPLEX | <code>OptAlgSIMPLEX</code>]]: Nelder-Mead Simplex Algorithm === Indirect, Stochastic Algorithms === These algorithms do not use gradient information but require stochastic processes (i.e. random numbers) in their search. * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>]]: 1+1 Evolution Strategy with 1/5 Success Rule: the (1+1)-ES ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>]]: A Multi-member Evolution Strategy with Covariance Matrix Adaptation: the CMA-ES == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>]]: Elitist Evolution Strategy with Covariance Matrix Adaptation * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>]]: Particle Swarm Optimization Algorithm == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>]]: A Module Containing Different DoE plans * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>]]: Uniform Random Sampling (Monte Carlo) == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code>]]: For Optimization Algorithms without Bound Handling * [[Documentation/Modules/ConstraintHandler | <code>ConstraintHandler </code>]]: For Optimization Algorithms without Constraint Handling == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code>]] A Simple Test Problem * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>]]: A Set of Single Objective Test Problem * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>]]: A Set of Multi-Objective Test Problem * [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]]: The goal is to opzimize the thickness of 10 trusses. The weight of the truess, maximum stress, and displacement can each be set either as objective or constraint. == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>]]: Artificial Neural Network == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>]]: A Framework for Surrogate Managing Documentation/Modules/BoundHandler 0 41 179 102 2015-10-25T11:11:30Z Dirk 2 /* Properties */ wikitext text/x-wiki ==Summary== Some optimizations require bounds on the design variables '''xxx'''. E.g. for the diameter of any mechanical support must be above a certain minimum value. As not all optimization algorithms include bound handling, the module <code>BoundHandler</code> was created. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | Design variables values outside the boundaries are corrected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== Any optimization algorithm proposes a new solution '''x'''. Some of the values of '''x''' might be outside the lower bounds x<sub>l</sub> and upper bounds x<sub>u</sub>, specified in the "Problem" module. These variables are corrected to values within the bounds by two different methods: 1. set to bounds If one of the variables x is below or above the bounds, it is set to the bound value, i.e. if x < x<sub>l</sub>, then x = x<sub>l</sub> else if x > x<sub>u</sub>, then x = x<sub>u</sub> 2. reflect If one of the variables x is below or above the bounds, it is reflected from the bound. The reflection is done such that if x goes to infinity, x is equal to the lower bound and if x goes to minus infinity, it is set to the upper bound. if x < x<sub>l</sub>, then x = x<sub>u</sub> + (x<sub>l</sub>- x<sub>u</sub>) / (x - x<sub>u</sub>) * (x<sub>l</sub>- x<sub>u</sub>); else if x > x<sub>u</sub>, then x = x<sub>l</sub> + (x<sub>u</sub>- x<sub>l</sub>) / (x - x<sub>l</sub>) * (x<sub>u</sub>- x<sub>l</sub>) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 180 179 2015-10-25T11:25:56Z Dirk 2 /* Module Description */ wikitext text/x-wiki ==Summary== Some optimizations require bounds on the design variables '''xxx'''. E.g. for the diameter of any mechanical support must be above a certain minimum value. As not all optimization algorithms include bound handling, the module <code>BoundHandler</code> was created. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | Design variables values outside the boundaries are corrected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The optimization algorithm proposes one or several new solutions '''x'''. Some values of '''x''' might be outside the lower bounds x<sub>l</sub> and upper bounds x<sub>u</sub>, specified in the "Problem" module. These variables are corrected to values within the bounds by thress different methods: 0. no bound handling This option turns off the bound handling. 1. set to bounds If one of the variables x is below or above the bounds, it is set to the bound value, i.e. if x < x<sub>l</sub>, then x = x<sub>l</sub> else if x > x<sub>u</sub>, then x = x<sub>u</sub> 2. reflect If one of the variables x is below or above the bounds, it is reflected from the bound. The reflection is done such that if x goes to infinity, x is equal to the lower bound and if x goes to minus infinity, it is set to the upper bound. if x < x<sub>l</sub>, then x = x<sub>u</sub> + (x<sub>l</sub>- x<sub>u</sub>)^2 / (x - x<sub>u</sub>) else if x > x<sub>u</sub>, then x = x<sub>l</sub> + (x<sub>u</sub>- x<sub>l</sub>)^2 / (x - x<sub>l</sub>) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 181 180 2015-10-25T11:26:46Z Dirk 2 /* Properties */ wikitext text/x-wiki ==Summary== Some optimizations require bounds on the design variables '''xxx'''. E.g. for the diameter of any mechanical support must be above a certain minimum value. As not all optimization algorithms include bound handling, the module <code>BoundHandler</code> was created. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | Design variables values outside the boundaries are corrected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The optimization algorithm proposes one or several new solutions '''x'''. Some values of '''x''' might be outside the lower bounds x<sub>l</sub> and upper bounds x<sub>u</sub>, specified in the "Problem" module. These variables are corrected to values within the bounds by thress different methods: 0. no bound handling This option turns off the bound handling. 1. set to bounds If one of the variables x is below or above the bounds, it is set to the bound value, i.e. if x < x<sub>l</sub>, then x = x<sub>l</sub> else if x > x<sub>u</sub>, then x = x<sub>u</sub> 2. reflect If one of the variables x is below or above the bounds, it is reflected from the bound. The reflection is done such that if x goes to infinity, x is equal to the lower bound and if x goes to minus infinity, it is set to the upper bound. if x < x<sub>l</sub>, then x = x<sub>u</sub> + (x<sub>l</sub>- x<sub>u</sub>)^2 / (x - x<sub>u</sub>) else if x > x<sub>u</sub>, then x = x<sub>l</sub> + (x<sub>u</sub>- x<sub>l</sub>)^2 / (x - x<sub>l</sub>) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - Documentation/Modules/ConstraintHandler 0 49 184 2015-10-25T17:42:24Z Dirk 2 Created page with "==Summary== Some optimization problems require objective functions as well as [[Documentation/Notation#constraints | constraints]]. require bounds on the design variables '''x..." wikitext text/x-wiki ==Summary== Some optimization problems require objective functions as well as [[Documentation/Notation#constraints | constraints]]. require bounds on the design variables '''xxx'''. E.g. for the diameter of any mechanical support must be above a certain minimum value. As not all optimization algorithms include bound handling, the module <code>BoundHandler</code> was created. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | Design variables values outside the boundaries are corrected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The optimization algorithm proposes one or several new solutions '''x'''. Some values of '''x''' might be outside the lower bounds x<sub>l</sub> and upper bounds x<sub>u</sub>, specified in the "Problem" module. These variables are corrected to values within the bounds by thress different methods: 0. no bound handling This option turns off the bound handling. 1. set to bounds If one of the variables x is below or above the bounds, it is set to the bound value, i.e. if x < x<sub>l</sub>, then x = x<sub>l</sub> else if x > x<sub>u</sub>, then x = x<sub>u</sub> 2. reflect If one of the variables x is below or above the bounds, it is reflected from the bound. The reflection is done such that if x goes to infinity, x is equal to the lower bound and if x goes to minus infinity, it is set to the upper bound. if x < x<sub>l</sub>, then x = x<sub>u</sub> + (x<sub>l</sub>- x<sub>u</sub>)^2 / (x - x<sub>u</sub>) else if x > x<sub>u</sub>, then x = x<sub>l</sub> + (x<sub>u</sub>- x<sub>l</sub>)^2 / (x - x<sub>l</sub>) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 186 184 2015-10-25T17:48:40Z Dirk 2 /* Summary */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | Design variables values outside the boundaries are corrected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The optimization algorithm proposes one or several new solutions '''x'''. Some values of '''x''' might be outside the lower bounds x<sub>l</sub> and upper bounds x<sub>u</sub>, specified in the "Problem" module. These variables are corrected to values within the bounds by thress different methods: 0. no bound handling This option turns off the bound handling. 1. set to bounds If one of the variables x is below or above the bounds, it is set to the bound value, i.e. if x < x<sub>l</sub>, then x = x<sub>l</sub> else if x > x<sub>u</sub>, then x = x<sub>u</sub> 2. reflect If one of the variables x is below or above the bounds, it is reflected from the bound. The reflection is done such that if x goes to infinity, x is equal to the lower bound and if x goes to minus infinity, it is set to the upper bound. if x < x<sub>l</sub>, then x = x<sub>u</sub> + (x<sub>l</sub>- x<sub>u</sub>)^2 / (x - x<sub>u</sub>) else if x > x<sub>u</sub>, then x = x<sub>l</sub> + (x<sub>u</sub>- x<sub>l</sub>)^2 / (x - x<sub>l</sub>) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 187 186 2015-10-25T17:53:06Z Dirk 2 /* Properties */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The optimization algorithm proposes one or several new solutions '''x'''. Some values of '''x''' might be outside the lower bounds x<sub>l</sub> and upper bounds x<sub>u</sub>, specified in the "Problem" module. These variables are corrected to values within the bounds by thress different methods: 0. no bound handling This option turns off the bound handling. 1. set to bounds If one of the variables x is below or above the bounds, it is set to the bound value, i.e. if x < x<sub>l</sub>, then x = x<sub>l</sub> else if x > x<sub>u</sub>, then x = x<sub>u</sub> 2. reflect If one of the variables x is below or above the bounds, it is reflected from the bound. The reflection is done such that if x goes to infinity, x is equal to the lower bound and if x goes to minus infinity, it is set to the upper bound. if x < x<sub>l</sub>, then x = x<sub>u</sub> + (x<sub>l</sub>- x<sub>u</sub>)^2 / (x - x<sub>u</sub>) else if x > x<sub>u</sub>, then x = x<sub>l</sub> + (x<sub>u</sub>- x<sub>l</sub>)^2 / (x - x<sub>l</sub>) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 188 187 2015-10-25T17:54:19Z Dirk 2 /* Module Description */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': 0. no bound handling This option turns off the bound handling. 1. set to bounds If one of the variables x is below or above the bounds, it is set to the bound value, i.e. if x < x<sub>l</sub>, then x = x<sub>l</sub> else if x > x<sub>u</sub>, then x = x<sub>u</sub> 2. reflect If one of the variables x is below or above the bounds, it is reflected from the bound. The reflection is done such that if x goes to infinity, x is equal to the lower bound and if x goes to minus infinity, it is set to the upper bound. if x < x<sub>l</sub>, then x = x<sub>u</sub> + (x<sub>l</sub>- x<sub>u</sub>)^2 / (x - x<sub>u</sub>) else if x > x<sub>u</sub>, then x = x<sub>l</sub> + (x<sub>u</sub>- x<sub>l</sub>)^2 / (x - x<sub>l</sub>) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 189 188 2015-10-25T18:11:51Z Dirk 2 /* Module Description */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking algorithm of the paper T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 190 189 2015-10-25T18:12:11Z Dirk 2 /* Module Description */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking algorithm of the paper T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 191 190 2015-10-25T18:13:17Z Dirk 2 /* Module Description */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking [[#1|1]] ==Usage== - ==Source Code== ToDo:Link to SVN ==References== - 192 191 2015-10-25T18:14:35Z Dirk 2 /* References */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking [[#1|1]] ==Usage== - ==Source Code== ToDo:Link to SVN ==References== [1]<div id="1">1</div> T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 193 192 2015-10-25T18:14:54Z Dirk 2 /* References */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking [[#1|1]] ==Usage== - ==Source Code== ToDo:Link to SVN ==References== [<div id="1">1</div>] T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 194 193 2015-10-25T18:15:26Z Dirk 2 /* Module Description */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking [[[#1|1]]] ==Usage== - ==Source Code== ToDo:Link to SVN ==References== [<div id="1">1</div>] T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 195 194 2015-10-25T18:15:44Z Dirk 2 /* Module Description */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== [<div id="1">1</div>] T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 196 195 2015-10-25T18:16:00Z Dirk 2 /* References */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== (<div id="1">1</div>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 197 196 2015-10-25T18:16:39Z Dirk 2 /* References */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 198 197 2015-10-25T18:18:01Z Dirk 2 /* Usage */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optim/tools/ConstraintHandler.java ==Source Code== ToDo:Link to SVN ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 199 198 2015-10-25T18:18:15Z Dirk 2 /* Usage */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== ToDo:Link to SVN ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 200 199 2015-10-25T18:18:23Z Dirk 2 /* Source Code */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optim/tools/ConstraintHandler.java ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", '''IEEE Transactions on Evolutionary Computation''', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 201 200 2015-10-25T18:18:36Z Dirk 2 /* References */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). 0. no constraint handling This option turns off the constraint handling. Objective values and constraints are not changed. 1. delete constraints Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. 2. Penalty method All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. 3. Penalty method This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optim/tools/ConstraintHandler.java ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", ''IEEE Transactions on Evolutionary Computation'', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 202 201 2015-10-25T18:52:07Z Dirk 2 /* Module Description */ wikitext text/x-wiki ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). '''0. no constraint handling''' This option turns off the constraint handling. Objective values and constraints are not changed. '''1. delete constraints''' Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. '''2. Penalty method''' All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. '''3. Penalty method''' This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optim/tools/ConstraintHandler.java ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", ''IEEE Transactions on Evolutionary Computation'', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 203 202 2015-10-25T18:53:19Z Dirk 2 /* Summary */ wikitext text/x-wiki [[Documentation/Modules | << UP TO MODULE OVERVIEW <<]] ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). '''0. no constraint handling''' This option turns off the constraint handling. Objective values and constraints are not changed. '''1. delete constraints''' Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. '''2. Penalty method''' All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. '''3. Penalty method''' This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optim/tools/ConstraintHandler.java ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", ''IEEE Transactions on Evolutionary Computation'', Vol. 4, No. 3, pp. 284-294, Sep. 2000. 204 203 2015-10-25T18:54:05Z Dirk 2 wikitext text/x-wiki [[Documentation/Modules | << BACK TO MODULE OVERVIEW <<]] ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). '''0. no constraint handling''' This option turns off the constraint handling. Objective values and constraints are not changed. '''1. delete constraints''' Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. '''2. Penalty method''' All objective function values are summed. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: output = sum<sub>i</sub>(f<sub>i</sub>) + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. '''3. Penalty method''' This algorithm works only for population based search methods such as CMA-ES. There are 3 steps a. All objective function values are summed: sum<sub>i</sub>(f<sub>i</sub>) b. All violated constraints (i.e. the constraint value is >= 0) are summed: sum<sub>j</sub>(max(g<sub>j</sub>,0)) c. Ranking of the solutions according to the Stochastic Ranking ([[#1|1]]) ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optim/tools/ConstraintHandler.java ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", ''IEEE Transactions on Evolutionary Computation'', Vol. 4, No. 3, pp. 284-294, Sep. 2000. Documentation/Modules/ProblemSimple 0 19 205 48 2015-10-25T18:54:45Z Dirk 2 /* Source Code */ wikitext text/x-wiki ==Summary== The module <code>ProblemSimple</code> contains a very simple optimization problem, which can be used to illustrate the optimization process. It contains a time delay, which allows to reduce the speed of evaluations. This can be used e.g. to show the convergence of an optimization algorithm in a presentation. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function. |- ! Design Variables | Continuous, discrete, or mixed variables. |- ! Objectives | single-objective for minimization. |- ! Constraints | none |- ! Boundaries | set to fixed value. |- ! Initial Search Region | not set. |- ! Typical X | not set. |- ! Initialization | sets problem properties. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | - |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ProblemSimple.java ==References== - Datei:ProblemTruss.png 6 50 206 2015-10-25T19:28:21Z Dirk 2 wikitext text/x-wiki Documentation/Modules/ProblemTruss 0 51 207 2015-10-25T19:38:26Z Dirk 2 Created page with "==Summary== The module <code>ProblemTruss</code> contains a multi-objective optimization problem. It implements a simple Finite Element Analysis code for analysing a truss struc..." wikitext text/x-wiki ==Summary== The module <code>ProblemTruss</code> contains a multi-objective optimization problem. It implements a simple Finite Element Analysis code for analysing a truss structure. [[File:ProblemTruss.png|300px]] The truss consists of 10 rods which connect the 6 point (labelled from 0 to 5). At point 0 and 2, a force F=45'000N is applied, which deforms the truss and generates stresses in the 10 rods. The input of this module are the individual cross-sections of the rods (i.e. 10 cross-sections). The output of this modules are 3 values, which can be set either as objectives or constraints: # the weight of the 10 rods of the truss # the maximum stress in a rod # the maximum deflection of a node of the truss. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | 10 continuous variables |- ! Objectives | yes, 3 outputs which can be set either as objectives or constraints. |- ! Constraints | yes, 3 outputs which can be set either as objectives or constraints. |- ! Boundaries | yes, can be set as an option. |- ! Initial Search Region | not set. |- ! Typical X | not set. |- ! Initialization | sets problem properties. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | - |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ProblemTruss.java ==References== - 208 207 2015-10-25T19:39:39Z Dirk 2 /* Summary */ wikitext text/x-wiki ==Summary== The module <code>ProblemTruss</code> is a multi-objective optimization problem. It implements a simple construction problem with the goal to optimize a truss structure. The module constains a small Finite Element Analysis code for analysing a truss structure. [[File:ProblemTruss.png|300px]] The truss consists of 10 rods which connect the 6 point (labelled from 0 to 5). At point 0 and 2, a force F=45'000N is applied, which deforms the truss and generates stresses in the 10 rods. The input of this module are the individual cross-sections of the rods (i.e. 10 cross-sections). The output of this modules are 3 values, which can be set either as objectives or constraints: # the weight of the 10 rods of the truss # the maximum stress in a rod # the maximum deflection of a node of the truss. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | 10 continuous variables |- ! Objectives | yes, 3 outputs which can be set either as objectives or constraints. |- ! Constraints | yes, 3 outputs which can be set either as objectives or constraints. |- ! Boundaries | yes, can be set as an option. |- ! Initial Search Region | not set. |- ! Typical X | not set. |- ! Initialization | sets problem properties. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | - |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ProblemTruss.java ==References== - Documentation/Modules/OptAlgMOPSO 0 16 209 45 2015-10-25T19:43:10Z Dirk 2 /* Source Code */ wikitext text/x-wiki ==Summary== This optimization module is an implementation of the particle swarm optimization algorithm for single- and multi-objective optimization [[#References | (1)]], however it contains some modifications to the publication. The algorithm reflects the natural movement of flocking birds. The algorithm is elitist: Always the best particles are kept as guides. This algorithm is designed for continuous variables and can not handle discrete problems. Furthermore, the algorithm is implemented for minimizing a single and multiple objective function(s). ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | stochastic - stochastic adaptation of the velocities. |- ! Design Variables | Written for continuous variables. No discrete or mixed variables are possible. |- ! Objectives | single- and multi-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial search region or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module | - |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described in the pop-up help. ==Module Description== === Initialization === The initial particles are randomly generated within the <code>initial search region</code> (if existing) or otherwise between the <code>bounds</code>. === Optimization === The algorithm contains stochastic processes and operates with a set of particles. Parallelization on the basis of the number of particles is implemented. ==Usage== ... todo ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optAlg/OptAlgMoPso.java ==References== (1) Sanaz Mostaghim. Multi-Objective Evolutionary Algorithms. Data Structures, Convergence, and Diversity. Paderborn, Germany, November 2004. Documentation/Modules/ConstraintHandler 0 49 210 204 2015-10-26T21:00:06Z Dirk 2 /* Module Description */ wikitext text/x-wiki [[Documentation/Modules | << BACK TO MODULE OVERVIEW <<]] ==Summary== Some optimization problems define [[Documentation/Notation#objectives | objectives]] as well as [[Documentation/Notation#constraints | constraints]]. For example, one can set for the optimization problem [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]] the weight of the truss to be minimized, while a constraint is set on the maximum stress and displacement of the truss. This module aggregates objectives and constraints into a single output. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic (as no gradient handling is implemented) |- ! Design Variables | continuous variables, discrete or mixed variables are possible. |- ! Objectives | any number |- ! Constraints | any number |- ! Boundaries | not affected |- ! Initial Search Region | not affected |- ! Typical X | not affected |- ! Initialization | not required |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | One connection of type <code>optimization</code> |- ! Ending at this module | One connection of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The result of an evaluation of a solution may contain objective values '''f''' and constraint values '''g''': While bjectives are to be minimized (<code>min('''f''')</code>), constraints are to be fulfilled (<code>'''g''' =< 0</code>). '''0. No Constraint Handling''' This option turns off the constraint handling. Objective values and constraints are not changed. '''1. Delete Constraints''' Deletes all constraints. This can be used if the goal is to minimize the objective function(s) only. The objective functions are not changed. '''2. Penalty Method''' To each objective function, a penalty (larger or equal to zero) is added. All violated constraints (i.e. the constraint value is >= 0) are summed and multiplied with a penalty factor <code>p</code>: penalized objective i = f<sub>i</sub> + sum<sub>j</sub>(max(g<sub>j</sub>,0))*p Increasing the penalty factor <code>p</code> puts more weight on the constraints compared to the objectives. '''3. Stochastic Ranking''' Limitations: # only for single objective problems # requires population based search methods such as CMA-ES. There are 3 steps Rough Description of Main Steps of Stochastic Ranking ([[#1|1]]) # For each solution, the penalty is computed as the sum of all violated constraints (i.e. the constraint value is >= 0) <code> p = sum<sub>j</sub>(max(g<sub>j</sub>,0)) </code> as in the Penalty Method. # The solutions of the population are randomly ranked. # Always two adjacent solutions of the population are compared either based on their objective value or based on their penalty. Typically the comparison according to the penalty should have a higher probability of about 60%. The winner of the comparison obtains the better ranking position. # The comparision is repeated several times. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/optim/tools/ConstraintHandler.java ==References== (<span id="1">1</span>) T. P. Runarsson and X. Yao, "Stochastic Ranking for Constrained Evolutionary Optimization", ''IEEE Transactions on Evolutionary Computation'', Vol. 4, No. 3, pp. 284-294, Sep. 2000. Download 0 47 211 145 2015-11-18T22:04:26Z Dirk 2 wikitext text/x-wiki == Download Software == The executable jar file is given at https://sourceforge.net/projects/opendino/files/ == Download Source Code == The software is version controlled using a Subversion (SVN) repository. Source code is located at https://sourceforge.net/p/opendino/code The URL specifies also the download command. In the SVN repository, a "trunk" exist and "branches" might be added. "trunk" contains the main development and should always at least compile and be executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.apache.org/ subversion homepage]) and should not be downloaded. Downloading requires a [http://subversion.apache.org/ subversion client] or an appropriate plug-in for your IDE. 238 211 2019-04-07T12:28:44Z Admin 1 wikitext text/x-wiki == Download Software == The executable jar file is given at https://sourceforge.net/projects/opendino/files/ == Download Source Code == The software is version controlled using a Subversion (SVN) repository. Source code is located at https://sourceforge.net/p/opendino/code The URL above provides also the the download command (using subversion). In the subversion repository, theres is a "trunk" and "branches". The "trunk" contains the main development and should always at least compilable and executable. "branches" are copies of the "trunk" for temporary modifications (see the [http://subversion.apache.org/ subversion homepage]) and should not be downloaded. Downloading requires a [http://subversion.apache.org/ subversion client] or an appropriate plug-in for your IDE. 5bdf4fac2354a5a6233a0d270a8cd09aee10021b Main Page 0 2 212 167 2016-02-18T20:28:28Z Dirk 2 /* Welcome to OpenDino */ wikitext text/x-wiki = Welcome to '''OpenDino''' = '''OpenDino ''' is an open source platform for automated optimization, design of experiment and learning, written in Java. The source code as well as as an executable can be found on [http://sourceforge.net/projects/opendino/ sourceforge]. The source code is structured in 3 layers: A core providing the basic backbone, Modules containing all algorithms, and a graphical user interface (GUI). This simplifies the integration of new algorithms as they are represented by additional "Modules". Implemented Modules * Evolutionary optimization algorithms (CMA-ES, (1+1)-ES, Swarm Algorithms) * Deterministic optimization algorithm (SIMPLEX) * Learning (feed-forward Artificial Neural Net) * Design of Experiments (full factorial design, Latin Hypercube, I-Optimal Design) * Problems (test functions, interface to external programs (solvers), distributed and parallel execution) * Other modules (data storage and visualization) Source Code * http://sourceforge.net/projects/opendino/ Contact: * [mailto:help@opendino.org help@opendino.org] Documentation 0 10 213 159 2016-09-15T21:11:40Z Dirk 2 /* Developers' Guide */ wikitext text/x-wiki == Requirements == * [[Documentation/Software/Requirements | Software Requirements]] == Users' Guide == * [[Installation | Installation]] * [[Screenshots | A First Introduction to OpenDino in the Screenshots]] * [[Documentation/Notation | Symbols and Notation]] * [[Documentation/Modules | Module Documentation]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] == Developers' Guide == * [[Download | Download]] * [[Documentation/Compiling | Developing and Compiling]] * Concepts behind OpenDino ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] 215 213 2016-09-15T21:15:46Z Dirk 2 /* Developers' Guide */ wikitext text/x-wiki == Requirements == * [[Documentation/Software/Requirements | Software Requirements]] == Users' Guide == * [[Installation | Installation]] * [[Screenshots | A First Introduction to OpenDino in the Screenshots]] * [[Documentation/Notation | Symbols and Notation]] * [[Documentation/Modules | Module Documentation]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] == Developers' Guide == * [[Download | Download]] * [[Documentation/Compiling | Developing and Compiling]] * Tutorials ** [[Tutorials/UseAsLibrary | Using OpenDino as a Library in other Java Code]] * Concepts behind OpenDino ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] 223 215 2016-09-15T21:57:11Z Admin 1 /* Developers' Guide */ wikitext text/x-wiki == Requirements == * [[Documentation/Software/Requirements | Software Requirements]] == Users' Guide == * [[Installation | Installation]] * [[Screenshots | A First Introduction to OpenDino in the Screenshots]] * [[Documentation/Notation | Symbols and Notation]] * [[Documentation/Modules | Module Documentation]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] == Developers' Guide == * [[Download | Download]] * [[Documentation/Compiling | Developing and Compiling]] * [[Tutorials | Using OpenDino as a Library in other Java Code]] * Concepts behind OpenDino ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] 224 223 2016-09-15T21:57:40Z Admin 1 /* Developers' Guide */ wikitext text/x-wiki == Requirements == * [[Documentation/Software/Requirements | Software Requirements]] == Users' Guide == * [[Installation | Installation]] * [[Screenshots | A First Introduction to OpenDino in the Screenshots]] * [[Documentation/Notation | Symbols and Notation]] * [[Documentation/Modules | Module Documentation]] == Theory == * [[Documentation/DoE | Introduction to Design of Experiment]] * [[Documentation/Optimization | Introduction to Automated Optimization]] * [[Documentation/Machine_Learning | Introduction to Machine Learning]] == Developers' Guide == * [[Download | Download]] * [[Documentation/Compiling | Developing and Compiling]] * [[Tutorials | Tutorials: Using OpenDino as a Library in other Java Code]] * Concepts behind OpenDino ** [[Documentation/Modules/TheCode | The 3 Main Parts]] ** [[Documentation/Modules/IModule | Interface <code>IModule</code> - The Obligatory Interface for Modules]] ** [[Documentation/Modules/Interfaces | Interfaces of Modules]] ** [[Documentation/Modules/ClassesModules | Abstract Modules and Classes]] == Various == * [[Documentation/Related | Links and Related Software]] Documentation/Software/Requirements 0 29 214 38 2016-09-15T21:12:55Z Dirk 2 wikitext text/x-wiki * Compiling: JDK 1.7 or higher * Executing: JRE 1.7 or higher 236 214 2019-04-07T12:24:34Z Admin 1 wikitext text/x-wiki * Compiling: JDK 1.8 or higher * Executing: JRE 1.8 or higher 47af24d995e2f3bf5a48dfe010f14dfc6fc8a1c1 237 236 2019-04-07T12:25:28Z Admin 1 wikitext text/x-wiki OpenOpal is written in Java. The required java revisions are: * Compiling: JDK 1.8 or higher * Executing: JRE 1.8 or higher 0b497a7d8cf2b6542d99da8160289185aedc7dc1 Tutorials 0 52 216 2016-09-15T21:27:46Z Dirk 2 Created page with "= Using OpenDino as a Library in Other Java Code = OpenDino contains a graphical user interface for simple interaction (see e.g. the [Screenshots]). Alternatively, OpenDino can..." wikitext text/x-wiki = Using OpenDino as a Library in Other Java Code = OpenDino contains a graphical user interface for simple interaction (see e.g. the [Screenshots]). Alternatively, OpenDino can be used as a library in other Java programs. All functionality of the software can be used such as the graphical plotting environment in the Module {{{DataViewer}}}. == Tutorials == The tutorials can be directly executed as they are implemented in a Java main method. {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Tutorial ! URL |- | single objective evolutionary optimization with output of the best solution | https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/tutorial/TutorialSingleObjectiveOptimization.java |- | multi-objective evolutionary optimization with visualization and data storage | https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/tutorial/TutorialMultiObjectiveOptimization.java |} 221 216 2016-09-15T21:56:44Z Admin 1 moved [[Tutorials/UseAsLibrary]] to [[Tutorials]] wikitext text/x-wiki = Using OpenDino as a Library in Other Java Code = OpenDino contains a graphical user interface for simple interaction (see e.g. the [Screenshots]). Alternatively, OpenDino can be used as a library in other Java programs. All functionality of the software can be used such as the graphical plotting environment in the Module {{{DataViewer}}}. == Tutorials == The tutorials can be directly executed as they are implemented in a Java main method. {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Tutorial ! URL |- | single objective evolutionary optimization with output of the best solution | https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/tutorial/TutorialSingleObjectiveOptimization.java |- | multi-objective evolutionary optimization with visualization and data storage | https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/tutorial/TutorialMultiObjectiveOptimization.java |} 225 221 2016-09-15T21:58:49Z Admin 1 /* Using OpenDino as a Library in Other Java Code */ wikitext text/x-wiki = Using OpenDino as a Library in Other Java Code = OpenDino contains a graphical user interface for simple interaction (see e.g. the [Screenshots]). Alternatively, OpenDino can be used as a library in other Java programs. All functionality of the software can be used such as the graphical plotting environment in the Module {{{DataViewer}}}. == Java Code == The tutorials can be directly executed as they are implemented in a Java main method. {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Tutorial ! URL |- | single objective evolutionary optimization with output of the best solution | https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/tutorial/TutorialSingleObjectiveOptimization.java |- | multi-objective evolutionary optimization with visualization and data storage | https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/tutorial/TutorialMultiObjectiveOptimization.java |} 226 225 2016-09-15T21:59:05Z Admin 1 /* Java Code */ wikitext text/x-wiki = Using OpenDino as a Library in Other Java Code = OpenDino contains a graphical user interface for simple interaction (see e.g. the [Screenshots]). Alternatively, OpenDino can be used as a library in other Java programs. All functionality of the software can be used such as the graphical plotting environment in the Module {{{DataViewer}}}. === Java Code === The tutorials can be directly executed as they are implemented in a Java main method. {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Tutorial ! URL |- | single objective evolutionary optimization with output of the best solution | https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/tutorial/TutorialSingleObjectiveOptimization.java |- | multi-objective evolutionary optimization with visualization and data storage | https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/tutorial/TutorialMultiObjectiveOptimization.java |} Documentation/Related 0 33 217 62 2016-09-15T21:50:28Z Dirk 2 /* JAVA Implementations */ wikitext text/x-wiki =Links and Related Pages= == JAVA Implementations == * Neural Network and Data Mining ** [http://snarli.sourceforge.net/ SNARLI] ** [http://www.cs.waikato.ac.nz/~ml/weka/ WEKA] ** [http://rapid-i.com/ RapidMiner] == MATLAB Implementations == * Neural Network and Data Mining ** [http://www.esat.kuleuven.ac.be/sista/lssvmlab/ Least Squares Support Vector Machines (LS-SVM)] == Multi-Language Implementations == * Optimization ** [https://www.lri.fr/~hansen/cmaesintro.html Evolution Strategy with Covariance Matrix Adaptation (CMA-ES)] 218 217 2016-09-15T21:51:30Z Dirk 2 /* JAVA Implementations */ wikitext text/x-wiki =Links and Related Pages= == JAVA Implementations == * Optimization Algorithms * Neural Network and Data Mining ** [http://snarli.sourceforge.net/ SNARLI] ** [http://www.cs.waikato.ac.nz/~ml/weka/ WEKA] == MATLAB Implementations == * Neural Network and Data Mining ** [http://www.esat.kuleuven.ac.be/sista/lssvmlab/ Least Squares Support Vector Machines (LS-SVM)] == Multi-Language Implementations == * Optimization ** [https://www.lri.fr/~hansen/cmaesintro.html Evolution Strategy with Covariance Matrix Adaptation (CMA-ES)] 219 218 2016-09-15T21:51:57Z Dirk 2 /* MATLAB Implementations */ wikitext text/x-wiki =Links and Related Pages= == JAVA Implementations == * Optimization Algorithms * Neural Network and Data Mining ** [http://snarli.sourceforge.net/ SNARLI] ** [http://www.cs.waikato.ac.nz/~ml/weka/ WEKA] == Multi-Language Implementations == * Optimization ** [https://www.lri.fr/~hansen/cmaesintro.html Evolution Strategy with Covariance Matrix Adaptation (CMA-ES)] Screenshots 0 3 220 149 2016-09-15T21:53:02Z Dirk 2 /* References */ wikitext text/x-wiki == The Main Window == After starting software, the main '''GUI''' appears (Fig. 1). The figure contains an example for an optimization using 4 '''Module'''s. Each module has a name and an unique ID. The software is a strictly modular. All functionality for automated optimization and machine learning is encoded in the modules. Here: Module 1 (<code>OptAlgCMA</code>) is an optimization algorithm. It is connected via Module 3 (<code>Protocoller</code>) with Module 2 (<code>ProblemSimple</code>). Module 2 contains the optimization problem, i.e. the function to minimize. Here, it is a simple continuous, quadratic function. Module 3 (<code>Protocoller</code>) is a protocoling module, i.e. it stores all evaluated solutions of an optimization run. These solutions can be visualized with Module 4 (<code>DataViewer</code>). [[Image:MainGUI.png|frame|center|Figure 1: Main GUI of OpenDino]] == Adding, Editing, and Connecting Modules == Right-clicking on the dotted area or on a module opens a dialogue as shown in Fig. 2. This dialogue supports: * adding modules (if clicked on a free space) * removing modules or changing the options of a module when clicking on a module * adding/removing connections between modules * checking and running modules In Fig. 2, the right-click is made on Module 4, e.g. for setting the options of this module. [[Image:ModuleRightclick.png|frame|center|Figure 2: Editing Modules]] == Running an Optimization == Right-clicking Module 1 and selecting the option <code>Run</code> starts an optimization. The standard output of the optimization is given in the lower part of the main window in Fig. 3. [[Image:Optimization.png|frame|center|Figure 3: Running an Optimization]] == Postprocessing an Optimization == Right-clicking Module 4 and selecting the option <code>Run</code> starts an the data viewer. Figure 4 shows the evolution of the objective function ''f'' over the number of evaluations. As the objective function is a simple quadratic function (x^2), the minimal function value is zero, which is approximated by 1e-12. [[Image:DataViewer.png|frame|center|Figure 4: Postprocessing an Optimization with the DataViewer module. ]] 239 220 2019-04-07T12:29:48Z Admin 1 wikitext text/x-wiki == The Main Window == After starting software, the main '''GUI''' appears (Fig. 1). The figure contains an example for an optimization using 4 '''Module'''s. Each module has a name and an unique ID. The software is strictly modular. All functionality for automated optimization and machine learning is encoded in the modules. Here: Module 1 (<code>OptAlgCMA</code>) is an optimization algorithm. It is connected via Module 3 (<code>Protocoller</code>) with Module 2 (<code>ProblemSimple</code>). Module 2 contains the optimization problem, i.e. the function to minimize. Here, it is a simple continuous, quadratic function. Module 3 (<code>Protocoller</code>) is a protocoling module, i.e. it stores all evaluated solutions of an optimization run. These solutions can be visualized with Module 4 (<code>DataViewer</code>). [[Image:MainGUI.png|frame|center|Figure 1: Main GUI of OpenDino]] == Adding, Editing, and Connecting Modules == Right-clicking on the dotted area or on a module opens a dialogue as shown in Fig. 2. This dialogue supports: * adding modules (if clicked on a free space) * removing modules or changing the options of a module when clicking on a module * adding/removing connections between modules * checking and running modules In Fig. 2, the right-click is made on Module 4, e.g. for setting the options of this module. [[Image:ModuleRightclick.png|frame|center|Figure 2: Editing Modules]] == Running an Optimization == Right-clicking Module 1 and selecting the option <code>Run</code> starts an optimization. The standard output of the optimization is given in the lower part of the main window in Fig. 3. [[Image:Optimization.png|frame|center|Figure 3: Running an Optimization]] == Postprocessing an Optimization == Right-clicking Module 4 and selecting the option <code>Run</code> starts an the data viewer. Figure 4 shows the evolution of the objective function ''f'' over the number of evaluations. As the objective function is a simple quadratic function (x^2), the minimal function value is zero, which is approximated by 1e-12. [[Image:DataViewer.png|frame|center|Figure 4: Postprocessing an Optimization with the DataViewer module. ]] 5582b0861ad3166b37d0a6a8adfa1ce20d505eda Tutorials/UseAsLibrary 0 53 222 2016-09-15T21:56:44Z Admin 1 moved [[Tutorials/UseAsLibrary]] to [[Tutorials]] wikitext text/x-wiki #REDIRECT [[Tutorials]] MediaWiki:Mainpage 8 54 227 2017-02-18T22:45:45Z Admin 1 Die Seite wurde neu angelegt: „Main_Page“ wikitext text/x-wiki Main_Page 8f9e9b397d590520d0938b3a063c1c0b58ba8445 MediaWiki:Download 8 55 228 2017-02-18T22:49:53Z Admin 1 Die Seite wurde neu angelegt: „Download“ wikitext text/x-wiki Download a479c9c34e878d07b4d67a73a48f432ad7dc53c8 Installation 0 40 231 148 2019-04-05T20:35:46Z Admin 1 wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Start == Start OpenDino with either: * double clicking on the jar (this is simple, however, not activated on all plattforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDino</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDino archive file <tt>opendino.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. For '''Windows''', create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDino %* For '''Linux''', create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDino $* To make the file executable enter in the shell: chmod u+x opendino.sh da35d95e5133660fb5c3feadb00b99d5a7dc993e 232 231 2019-04-05T20:45:53Z Admin 1 wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Start == Start OpenDino with either: * double clicking on the jar (this is simple, however, not activated on all platforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDino</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDino archive file <tt>opendino.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. For '''Windows''', create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDino %* For '''Linux''', create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDino $* To make the file executable enter in the shell: chmod u+x opendino.sh 19f1548cdffad771636ce5278fcedb266d3e4449 233 232 2019-04-05T20:50:36Z Admin 1 wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Running OpenDino == Start OpenDino with either: * double clicking on the jar (this is simple, however, not activated on all platforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDino</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDino archive file <tt>opendino.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. For '''Windows''', create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDino %* For '''Linux''', create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDino $* To make the file executable enter in the shell: chmod u+x opendino.sh ff6793a9ebed385a7cdd30b4965a8bee3e6532e6 234 233 2019-04-05T20:50:51Z Admin 1 /* Running OpenDino */ wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Running OpenDino == Start OpenDino by either: * double clicking on the jar (this is simple, however, not activated on all platforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDino</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDino archive file <tt>opendino.jar</tt>. This filename can be replaced to match the actual name or by a filename with absolute path. For '''Windows''', create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDino %* For '''Linux''', create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDino $* To make the file executable enter in the shell: chmod u+x opendino.sh 2208b84db6276bee0e047e4b93b75c7bfa4a1864 235 234 2019-04-05T20:56:40Z Admin 1 /* Writing a Shell Script */ wikitext text/x-wiki == Download == The compiled software can be downloaded from [[Download]] page. As the software is written in Java, the compiled code runs on most platforms. The software consists of a single jar file <tt>opendino.jar</tt>. == Running OpenDino == Start OpenDino by either: * double clicking on the jar (this is simple, however, not activated on all platforms and console output may not be seen). * open a Linux shell or Windows Command Line and enter one of the following two command in the same directory as file <tt>opendino.jar</tt> was downloaded (Windows often requires the latter command). <pre>$ java -jar opendino.jar </pre> <pre>$ java -classpath opendino.jar org.opendino.core.OpenDino</pre> * to see additional command line options enter <pre>$ java -jar opendino.jar -help </pre> == Writing a Shell Script == The script assumes an OpenDino archive file <tt>opendino.jar</tt>. For '''Windows''', create a file <tt>opendino.bat</tt> with the following content: java -cp opendino.jar org/opendino/core/OpenDino %* To use the batch file also from different directories, use the absolute path, e.g.: java -cp C:\Programs\opendino.jar org/opendino/core/OpenDino %* Now you can also double click project files (*.opl). When Windows ask for the program/app to open this file, choose the batch file written above. For '''Linux''', create a file <tt>opendino.sh</tt> with the following content: #!/bin/sh java -classpath opendino.jar org.opendino.core.OpenDino $* To make the file executable enter in the shell: chmod u+x opendino.sh 55ce64450e075d47a51f453030687b71c4b6f02d Documentation/Notation 0 26 240 183 2019-04-07T12:31:38Z Admin 1 wikitext text/x-wiki == Notation == As a maths parser is currently not used in this Wiki, we write math equations as formatted text: * Scalars are written as small italic letters, e.g. ''f'' * Vectors are written as small bold letters, e.g. '''x'''. * Matrices are written in capital bold letters, e.g. '''C'''. == Symbols == :{| cellpadding="5" width="95%" |- | ''a'', '''a''' | additionals, i.e. additional value(s) |- | ''f'', '''f''' | objective function(s) |- | ''g'', '''g''' | constraint(s) |- | ''x'', '''x''' | design variable(s) |- |} == Terminology == :{| cellpadding="5" cellspacing="0" width="95%" border="1" |- | ''additionals'' <div id="additionals"></div> | Additionals '''a''' are additional values in a '''solution''' that are for information only and do not influence the optimization. For example, if an optimization problem returns an objective function that is a sum of several values, these values could be added to the solution as additional values '''a'''. |- | ''constraints'' <div id="constraints"></div> | Constraints '''g''' are criteria that have to be fulfilled. OpenDino defines a constraint ''g'' as * fulfilled, if ''g'' =< 0 * violated, if ''g'' > 0. The most simple constraint handling in optimization is to add a penalty to the objective function if the constraint is vialoted, resulting in ''f'' + max(0, ''g''). |- | ''design variables'' <div id="design_variables"></div> | The vector of design variables '''x''' may consist of real numbers (continuous variables), integers (discrete variables) or both (mixed variables). |- | ''objectives'' <div id="objectives"></div> | An optimization problem must have at least one objective or one constraint. OpenDino requires that the objective(s) '''f''' is/are to be minimized. A maximization of a function ''k'' can be converted into minimization by using ''f'' = -''k''. |- | ''solution'' <div id="solution"></div> | The term solution is used in optimization. One solution ('''x''','''f''','''g''','''a''') consists of a vector of design variables '''x''', the evaluated objective(s) '''f'''('''x'''), constraint(s) '''g'''('''x'''), and optionally of additional values '''a'''. |-|} 26fa4af1f5e30b87ca8136bef50e7ebbc5ccbec4 Documentation/Modules/ContinuousMOTestProblems 0 58 241 2019-04-07T13:06:16Z Admin 1 Die Seite wurde neu angelegt: „==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problesm, which can be used to test optimization a…“ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problesm, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | Continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! none | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ProblemSimple.java ==References== - 08a8758828b3f9c83fe85d3ff96bac292e6eec4a 242 241 2019-04-07T13:06:40Z Admin 1 /* Actions */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problesm, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | Continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ProblemSimple.java ==References== - 0546f8d452da5c8dd0aa67f30e19ce8890af95a8 243 242 2019-04-07T13:07:13Z Admin 1 /* Source Code */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problesm, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | Continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ProblemMOTestProblems.java ==References== - f5836977a5282b143cf423cd7f7d658c2a8b5d61 244 243 2019-04-07T13:07:52Z Admin 1 /* Source Code */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problesm, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | Continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - 579464d8003ce0f3c0bec38e68f0b23010d01c47 245 244 2019-04-07T13:08:17Z Admin 1 /* Summary */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | Continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - 1284d202c86bc9dd74bdb238423767077f279431 246 245 2019-04-07T13:08:40Z Admin 1 /* General */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Computation of the Objective === The single objective function ''f'' is a quadratic function. More precisely, ''f'' is computed as the square of all continuous and discrete variables. ''f''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - 95e1846bae1ee902d17ec0c8eefd1ff9392c409a 247 246 2019-04-07T13:10:33Z Admin 1 /* Computation of the Objective */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Multi-Objective Sphere === The multi-objective sphere function '''f''' is a set of quadratic functions. More precisely, each ''f<sub>i'' is computed as the square of all continuous variables. ''f<sub>i</sub>''('''x''') = sum<sub>i</sub>(x<sub>i</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - c136e8c434fdf9c836895744805546db73846515 248 247 2019-04-07T13:14:30Z Admin 1 /* Multi-Objective Sphere */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Multi-Objective Sphere === The multi-objective sphere function '''f''' is a set of quadratic functions. More precisely, each ''f<sub>i'' is computed as the square of all continuous variables. ''f<sub>i</sub>''('''x''') = ''x<sub>i</sub>''<sup>2</sup> + sum<sub>''j, j~=i''</sub> (x<sub>''j''</sub><sup>2</sup>) This function is also referred to as the ''sphere function''. ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - 33ed99cb6d96f49629602e32dd42ef50f701cc0e 249 248 2019-04-07T13:19:00Z Admin 1 /* Multi-Objective Sphere */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Multi-Objective Sphere === The multi-objective sphere function '''f''' is a set of quadratic functions. More precisely, each ''f<sub>i'' is computed as the square of all continuous variables. ''f<sub>i</sub>''('''x''') = (''x<sub>i</sub>'' - 1)<sup>2</sup> + sum<sub>''j, j~=i''</sub> (x<sub>''j''</sub><sup>2</sup>) For example ''f<sub>1</sub>''('''x''') = (''x<sub>1</sub>'' - 1)<sup>2</sup> + ''x''<sub>2</sub><sup>2 + ''x''<sub>3</sub><sup>2 + ... ''f<sub>2</sub>''('''x''') = ''x<sub>1</sub>'' <sup>2</sup> + (''x<sub>2</sub>'' - 1)<sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ... ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - f2c680a1b972bae32f4e5b32fec5c71e5915538a 250 249 2019-04-07T13:31:13Z Admin 1 /* Multi-Objective Sphere */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Multi-Objective Sphere === The multi-objective sphere function '''f''' is a set of quadratic functions. More precisely, each ''f<sub>i'' is computed as the square of all continuous variables. ''f<sub>i</sub>''('''x''') = (''x<sub>i</sub>'' - 1)<sup>2</sup> + sum<sub>''j, j~=i''</sub> (x<sub>''j''</sub><sup>2</sup>) For example ''f<sub>1</sub>''('''x''') = (''x<sub>1</sub>'' - 1)<sup>2</sup> + ''x''<sub>2</sub><sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ''f<sub>2</sub>''('''x''') = ''x<sub>1</sub>''<sup>2</sup> + (''x<sub>2</sub>'' - 1)<sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ... The Pareto front for the two-objective case is given in the following picture: ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - d8a55029be93a4a4db2247f82bbeaafd51d02cf5 252 250 2019-04-07T13:53:58Z Admin 1 /* Multi-Objective Sphere */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Multi-Objective Sphere === The multi-objective sphere function '''f''' is a set of quadratic functions. More precisely, each ''f<sub>i'' is computed as the square of all continuous variables. ''f<sub>i</sub>''('''x''') = (''x<sub>i</sub>'' - 1)<sup>2</sup> + sum<sub>''j, j~=i''</sub> (x<sub>''j''</sub><sup>2</sup>) For example ''f<sub>1</sub>''('''x''') = (''x<sub>1</sub>'' - 1)<sup>2</sup> + ''x''<sub>2</sub><sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ''f<sub>2</sub>''('''x''') = ''x<sub>1</sub>''<sup>2</sup> + (''x<sub>2</sub>'' - 1)<sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ... The Pareto front for the two-objective case is given in the following picture: [[Image:moo_sphere.png|frame|center|10px|Pareto front of the multi-objective sphere function]] ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - 415d7f6afcde6f9f068b10531978450c6976af59 254 252 2019-04-07T16:20:07Z Admin 1 /* Multi-Objective Sphere */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Multi-Objective Sphere === The multi-objective sphere function '''f''' is a set of quadratic functions. More precisely, each ''f<sub>i'' is computed as the square of all continuous variables. ''f<sub>i</sub>''('''x''') = (''x<sub>i</sub>'' - 1)<sup>2</sup> + sum<sub>''j, j~=i''</sub> (x<sub>''j''</sub><sup>2</sup>) For example ''f<sub>1</sub>''('''x''') = (''x<sub>1</sub>'' - 1)<sup>2</sup> + ''x''<sub>2</sub><sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ''f<sub>2</sub>''('''x''') = ''x<sub>1</sub>''<sup>2</sup> + (''x<sub>2</sub>'' - 1)<sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ... The Pareto front for the two-objective case is given in the following picture: [[Image:moo_sphere.png|100x100px|center|thumb|300x300px|Pareto front of the multi-objective sphere function]] ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - 30cae2c327fabed8eba00d89e82f000878664d4b 256 254 2019-04-07T16:29:40Z Admin 1 /* Module Description */ wikitext text/x-wiki ==Summary== The module <code>ContinuousMOTestProblems</code> contains a set of multi-objective optimization problems, which can be used to test optimization algorithms. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic test function |- ! Design Variables | continuous design variables only |- ! Objectives | multi-objective for minimization |- ! Constraints | none |- ! Boundaries | problem dependent |- ! Initial Search Region | problem dependent |- ! Typical X | not set |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at his module | none |- ! Ending at this module | Connections of type <code>optimization</code> |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! - | - |- |} ===Options=== The options are the number of discrete and continuous variables and an optional time delay for per evaluation. ==Module Description== === Multi-Objective Sphere === The multi-objective sphere function '''f''' is a set of quadratic functions. More precisely, each ''f<sub>i'' is computed as the square of all continuous variables. ''f<sub>i</sub>''('''x''') = (''x<sub>i</sub>'' - 1)<sup>2</sup> + sum<sub>''j, j~=i''</sub> (x<sub>''j''</sub><sup>2</sup>) For example ''f<sub>1</sub>''('''x''') = (''x<sub>1</sub>'' - 1)<sup>2</sup> + ''x''<sub>2</sub><sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ''f<sub>2</sub>''('''x''') = ''x<sub>1</sub>''<sup>2</sup> + (''x<sub>2</sub>'' - 1)<sup>2</sup> + ''x''<sub>3</sub><sup>2 + ... ... The Pareto front for the two-objective case is given in the following picture: {| | [[Image:moo_sphere_ds.png|100x100px|center|thumb|300x300px|Design space]] | [[Image:moo_sphere.png|100x100px|center|thumb|300x300px|Objective space]] |} ==Usage== - ==Source Code== https://sourceforge.net/p/opendino/code/HEAD/tree/trunk/src/org/opendino/modules/problems/ContinuousMOTestProblems.java ==References== - 215400b8e149da1137f4df77efdfbf48ea29ab11 Datei:Moo sphere.png 6 59 251 2019-04-07T13:49:03Z Admin 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 253 251 2019-04-07T16:13:08Z Admin 1 Admin lud eine neue Version von [[Datei:Moo sphere.png]] hoch wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Datei:Moo sphere ds.png 6 60 255 2019-04-07T16:27:25Z Admin 1 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Documentation/Modules/OptAlgSimplex 0 12 257 16 2019-04-24T21:03:33Z Admin 1 Admin verschob die Seite [[Documentation/Modules/OptAlgSIMPLEX]] nach [[Documentation/Modules/OptAlgSimplex]] wikitext text/x-wiki ==Summary== This optimization module is an implementation of the popular Nelder-Mead Simplex Algorithm (1965) [[#NelMead | (1)]]. The SIMPLEX method is a standard direct, deterministic optimization algorithm, which is implemented in many numerical tools (e.g. as method <code>fminsearch.m</code> in the MATLAB(R) optimization toolbox or in [http://www.gnu.org/software/octave/ GNU Octave]). A good introduction is given by Wright [[#Wright | (2)]]. The algorithm works best for a small number of design variables (1-10, sometimes 1-20). It fails, for example, on the Rosenbrock function, if more than 10 design variables are given. ==Properties== ===General=== {| class="wikitable" style="text-align:left" border="2" cellpadding="5" cellspacing="5" |- ! Algorithm | deterministic |- ! Design Variables | Written for continuous variables. Discrete or mixed variables are NOT possible. |- ! Objectives | single-objective for minimization. |- ! Constraint handling | no |- ! Boundary handling | no |- ! Initialization | Requires at least one of the following: initial solution, initial search region, or bounds. |- |} ===Connections=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Starting at this module | Module requires exactly one connection of type <code>optimization</code>. |- ! Ending at this module |- |} ===Actions=== {| class="wikitable" style="text-align:left" border="1" cellpadding="5" cellspacing="0" |- ! Name !! Description |- ! '''Run''' | starts the optimization. |- |} ===Options=== The options are currently described as "pop-up help". ==Module Description== The SIMPLEX algorithm is implemented using the paper of Wright [[#Wright | (2)]]. However, some extensions are made as e.g. the initialization is not given in the references. === Initialization === First, an initial simplex is generated. Here, a [http://en.wikipedia.org/wiki/Simplex simplex] is a body in the N-dimensional design space that has N+1 vertices. The vertices are connected by straight lines. For two (N=2) and three (N=3) design variables, a simplex is a triangle or tetrahedron, respectively. If the optimization problem provides an initial solution, this point is taken as first vertex of the simplex. If not, the initial simplex gets a random position obeying certain rules. We distinguish several cases, depending on the problem properties (<code>initial solution, initial search region, bounds</code>). {| border="1" cellspacing="0" ! colspan="3" | Problem Properties Given? || Action |- | <code>initial solution</code> || <code>initial search region</code> || <code>bounds</code> || |- |Yes || No || No || option <code>Initial Size of the Simplex</code> defines the absolute length of the simplex in each design variable direction. I.e. a simplex is constructed, such that the distance between each vertex and the plane generated by the remaining points has this length. |- |Yes or No || Yes || Yes or No || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the initial search region (i.e. difference upper to lower limit). Bounds are ignored. |- |Yes or No || No || Yes || option <code>Initial Size of the Simplex</code> defines the relative length of the simplex in each design variable direction compared to the size of the bounds (i.e. difference upper to lower limit). |} === Optimization === The SIMPLEX method follows a deterministic procedure. Except the initialization, always one new point is generated and evaluated. Thus, parallelization is not implemented. ==Usage== ... todo ==Source Code== ToDo:Link to SVN ==References== <span id="NelMead">1</span> Nelder, J. A. and Mead, R. "A Simplex Method for Function Minimization." Comput. J. 7, 308-313, 1965. <span id="Wright">2</span> M. H. Wright. "Direct search methods: once scorned, now respectable". In D. F. Griffiths and G. A. Watson, editors, Numerical Analysis 1995 (Proceedings of the 1995 Dundee Biennial Conference in Numerical Analysis), pages 191–208. Addison Wesley Longman, 1996. Documentation/Modules/OptAlgSIMPLEX 0 61 258 2019-04-24T21:03:33Z Admin 1 Admin verschob die Seite [[Documentation/Modules/OptAlgSIMPLEX]] nach [[Documentation/Modules/OptAlgSimplex]] wikitext text/x-wiki #WEITERLEITUNG [[Documentation/Modules/OptAlgSimplex]] a52ad1692c9595423bce9b3e192cdd2f9bc3cbe4 Documentation/Modules 0 11 259 185 2019-04-24T21:04:16Z Admin 1 wikitext text/x-wiki '''Modules''' contain all the functionality for optimizing and learning. One '''Modules''' may contain an optimization algorithm, an artificial neural network, or a problem to optimize. Here is a list of documented modules in OpenDino. Further modules may exist, but may not yet be documented. == Single Objective Optimization Algorithms == === Indirect, Deterministic Algorithms === Indirect algorithms use gradient or higher order derivative information in the optimization. Not implemented, yet. === Direct, Deterministic Algorithms === These algorithms neither use gradient information nor stochastic processes. * [[Documentation/Modules/OptAlgSimplex | <code>OptAlgSimplex</code>]]: Nelder-Mead Simplex Algorithm === Indirect, Stochastic Algorithms === These algorithms do not use gradient information but require stochastic processes (i.e. random numbers) in their search. * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgOpO|<code>OptAlgOpO</code>]]: 1+1 Evolution Strategy with 1/5 Success Rule: the (1+1)-ES ** [[Documentation/Modules/OptAlgCMA|<code>OptAlgCMA</code>]]: A Multi-member Evolution Strategy with Covariance Matrix Adaptation: the CMA-ES == Single and Multi-Objective Optimization Algorithms == === Indirect, Stochastic Algorithms === * Evolutionary Algorithms ** [[Documentation/Modules/OptAlgMoCMA | <code>OptAlgMoCMA</code>]]: Elitist Evolution Strategy with Covariance Matrix Adaptation * Particle Methods ** [[Documentation/Modules/OptAlgMOPSO | <code>OptAlgMOPSO</code>]]: Particle Swarm Optimization Algorithm == Design of Experiments == * [[Documentation/Modules/DoePlanner | <code>DoePlanner</code>]]: A Module Containing Different DoE plans * [[Documentation/Modules/RandomSampling | <code>RandomSampling</code>]]: Uniform Random Sampling (Monte Carlo) == Optimization in General == * [[Documentation/Modules/BoundHandler | <code>BoundHandler</code>]]: For Optimization Algorithms without Bound Handling * [[Documentation/Modules/ConstraintHandler | <code>ConstraintHandler </code>]]: For Optimization Algorithms without Constraint Handling == Optimization Problems == * [[Documentation/Modules/ProblemSimple | <code>ProblemSimple</code>]] A Simple Test Problem * [[Documentation/Modules/ContinuousTestProblems | <code>ContinuousTestProblems </code>]]: A Set of Single Objective Test Problem * [[Documentation/Modules/ContinuousMOTestProblems | <code>ContinuousMOTestProblems </code>]]: A Set of Multi-Objective Test Problem * [[Documentation/Modules/ProblemTruss | <code>ProblemTruss </code>]]: The goal is to opzimize the thickness of 10 trusses. The weight of the truess, maximum stress, and displacement can each be set either as objective or constraint. == Machine Learning == * [[Documentation/Modules/NeuralNetwork | <code>NeuralNetwork</code>]]: Artificial Neural Network == Miscellaneous Modules == * [[Documentation/Modules/SurrogateManager | <code>SurrogateManager</code>]]: A Framework for Surrogate Managing 92e9e2b9a74e19514640f044d865691b65d0da58